Recherche avancée

Médias (2)

Mot : - Tags -/kml

Autres articles (62)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (4992)

  • We are hiring engineers to build an awesome product and platform used by millions of people

    16 février 2016, par Piwik Core Team — Jobs

    Are you ready for a new challenge ? Or maybe you know someone who is looking for a change ? We have some exciting problems to solve and are looking for senior developers to work with us and our community on our open source Piwik Analytics platform. Piwik is used by more than one million websites all over the world. It is deployed on more than 300.000 servers and some users track more than 1 billion actions per month.

    What is it like to work on Piwik ?

    We develop this software using modern PHP, MySQL, Redis, AngularJS and more. We provide several kind of APIs and a plugin architecture to allow developers to extend and change Piwik to their needs. However, we would not be Piwik if we stopped at this point ! We want to turn Piwik into an even more awesome product and platform.
    You can imagine there is a lot to do and many challenges to face !

    While one part is to always make Piwik scale better and to improve UI and UX, we also want to provide simple APIs to make the life of developers as pleasant as possible. We aim to solve things the right way and our thousands of unit, integration, system, JavaScript and screenshot tests help us to innovate and to not be afraid of change. We like clean code and constant improvements.

    The Piwik team lives in New Zealand, Europe (Poland, Germany) and in the U.S. We do the vast majority of our collaboration online. Our values include being open, transparent and sharing knowledge. For this we use tools like GitHub and Slack to communicate and Quake servers to take our minds off complex challenges. We are a small, flexible team, so when you come aboard, you will play an integral part in engineering and have a big impact on the product loved by so many people. You’ll help to create a welcoming environment for new contributors and set an example with your development practices and communications skills.

    Apply now, or spread the word !

    If you have strong skills in PHP send us an email with your CV and tell us a little about yourself and your experience in engineering complex applications.

    Apply for a job here http://piwik.org/jobs/ and if you’re maybe not the right candidate, contribute to the project by sharing this blog post and by sending it to your friends !

  • We are hiring engineers to build an awesome product and platform used by millions of people

    16 février 2016, par Piwik Core Team — Uncategorized

    Are you ready for a new challenge ? Or maybe you know someone who is looking for a change ? We have some exciting problems to solve and are looking for senior developers to work with us and our community on our open source Piwik Analytics platform. Piwik is used by more than one million websites all over the world. It is deployed on more than 300.000 servers and some users track more than 1 billion actions per month.

    What is it like to work on Piwik ?

    We develop this software using modern PHP, MySQL, Redis, AngularJS and more. We provide several kind of APIs and a plugin architecture to allow developers to extend and change Piwik to their needs. However, we would not be Piwik if we stopped at this point ! We want to turn Piwik into an even more awesome product and platform.
    You can imagine there is a lot to do and many challenges to face !

    While one part is to always make Piwik scale better and to improve UI and UX, we also want to provide simple APIs to make the life of developers as pleasant as possible. We aim to solve things the right way and our thousands of unit, integration, system, JavaScript and screenshot tests help us to innovate and to not be afraid of change. We like clean code and constant improvements.

    The Piwik team lives in New Zealand and Europe (Germany). We do the vast majority of our collaboration online. Our values include being open, transparent and sharing knowledge. For this we use tools like GitHub and Slack to communicate and Quake servers to take our minds off complex challenges. We are a small, flexible team, so when you come aboard, you will play an integral part in engineering and have a big impact on the product loved by so many people. You’ll help to create a welcoming environment for new contributors and set an example with your development practices and communications skills.

    Apply now, or spread the word !

    If you have strong skills in PHP send us an email with your CV and tell us a little about yourself and your experience in engineering complex applications.

    Apply for a job here http://piwik.org/jobs/ and if you’re maybe not the right candidate, contribute to the project by sharing this blog post and by sending it to your friends !

  • FFMPEG error : Exactly one scaler algorithm must be chosen

    28 mai 2015, par Dave_Dev

    I am currently working on an FFMPEG project. I am trying to convert an RGB image into a YUV image using this code (I found it in the internet last night) :

    void Decode::video_encode_example(const char *filename, int codec_id)

       {

       AVCodec *codec;

       AVCodecContext *c= NULL;

       int i, ret, x, y, got_output;
       FILE *f;
       AVFrame *frame;
       AVPacket pkt;
       uint8_t endcode[] = { 0, 0, 1, 0xb7 };

       printf("Encode video file %s\n", filename);

       /* find the mpeg1 video encoder */
       codec = avcodec_find_encoder((enum AVCodecID)codec_id);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate video codec context\n");
           exit(2);
       }

       /* put sample parameters */
       c->bit_rate = 400000;
       /* resolution must be a multiple of two */
       c->width = 352;
       c->height = 288;
       /* frames per second */
       c->time_base = (AVRational){1,25};
       /* emit one intra frame every ten frames
        * check frame pict_type before passing frame
        * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
        * then gop_size is ignored and the output of encoder
        * will always be I frame irrespective to gop_size
        */
       c->gop_size = 10;
       c->max_b_frames = 1;
       c->pix_fmt = AV_PIX_FMT_YUV420P;

       if (codec_id == AV_CODEC_ID_H264)
           av_opt_set(c->priv_data, "preset", "slow", 0);

       /* open it */
       if (avcodec_open2(c, codec, NULL) < 0) {
           fprintf(stderr, "Could not open codec\n");
           exit(3);
       }

       f = fopen(filename, "wb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(4);
       }

       frame = avcodec_alloc_frame();// Dans une version plus récente c'est av_frame_alloc
       if (!frame) {
           fprintf(stderr, "Could not allocate video frame\n");
           exit(5);
       }
       frame->format = c->pix_fmt;
       frame->width  = c->width;
       frame->height = c->height;

       /* the image can be allocated by any means and av_image_alloc() is
        * just the most convenient way if av_malloc() is to be used */
       ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height,
                            c->pix_fmt, 32);
       if (ret < 0) {
           fprintf(stderr, "Could not allocate raw picture buffer\n");
           exit(6);
       }

       //
       // RGB to YUV:
       //    http://stackoverflow.com/questions/16667687/how-to-convert-rgb-from-yuv420p-for-ffmpeg-encoder
       //
       // Create some dummy RGB "frame"
       uint8_t *rgba32Data = new uint8_t[4*c->width*c->height];

       SwsContext * ctx = sws_getContext(c->width, c->height,
                                         AV_PIX_FMT_RGBA, c->width, c->height,
                                         AV_PIX_FMT_YUV420P, 0, 0, 0, 0);


       /* encode 1 second of video */
       for (i = 0; i < 25; i++) {
           av_init_packet(&pkt);
           pkt.data = NULL;    // packet data will be allocated by the encoder
           pkt.size = 0;


           fflush(stdout);
           /* prepare a dummy image */
           /* Y */
           //        for (y = 0; y < c->height; y++) {
           //            for (x = 0; x < c->width; x++) {
           //                frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3;
           //            }
           //        }
           //
           //        /* Cb and Cr */
           //        for (y = 0; y < c->height/2; y++) {
           //            for (x = 0; x < c->width/2; x++) {
           //                frame->data[1][y * frame->linesize[1] + x] = 128 + y + i * 2;
           //                frame->data[2][y * frame->linesize[2] + x] = 64 + x + i * 5;
           //            }
           //        }

           uint8_t *pos = rgba32Data;
           for (y = 0; y < c->height; y++)
           {
               for (x = 0; x < c->width; x++)
               {
                   pos[0] = i / (float)25 * 255;
                   pos[1] = 0;
                   pos[2] = x / (float)(c->width) * 255;
                   pos[3] = 255;
                   pos += 4;
               }
           }

           uint8_t * inData[1] = { rgba32Data }; // RGBA32 have one plane
           //
           // NOTE: In a more general setting, the rows of your input image may
           //       be padded; that is, the bytes per row may not be 4 * width.
           //       In such cases, inLineSize should be set to that padded width.
           //
           int inLinesize[1] = { 4*c->width }; // RGBA stride
           sws_scale(ctx, inData, inLinesize, 0, c->height, frame->data, frame->linesize);

           frame->pts = i;

           /* encode the image */
           ret = avcodec_encode_video2(c, &pkt, frame, &got_output);
           if (ret < 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(7);
           }

           if (got_output) {
               printf("Write frame %3d (size=%5d)\n", i, pkt.size);
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&pkt);
           }
       }

       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           fflush(stdout);

           ret = avcodec_encode_video2(c, &pkt, NULL, &got_output);
           if (ret < 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(8);
           }

           if (got_output) {
               printf("Write frame %3d (size=%5d)\n", i, pkt.size);
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&pkt);
           }
       }

       /* add sequence end code to have a real mpeg file */
       fwrite(endcode, 1, sizeof(endcode), f);
       fclose(f);

       avcodec_close(c);
       av_free(c);
       av_freep(&frame->data[0]);
       avcodec_free_frame(&frame);// Dans une version plus récente c'est av_frame_alloc
       printf("\n");
       }

           int main()
           {

               Decode d;

               avcodec_register_all();

               d.video_encode_example("/home/Dave/Desktop/test.mpg",AV_CODEC_ID_MPEG2VIDEO);

           }

    When I run this application, my Linux terminal shows me the following error :

    [swscaler @ 0x1e1dc60] Exactly one scaler algorithm must be chosen
    Segmentation fault (core dumped)

    I do not know what is actually happening. Could you help me please ?