Recherche avancée

Médias (0)

Mot : - Tags -/médias

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (99)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

Sur d’autres sites (8034)

  • Access ffmpeg stdout using Xabe.FFmpeg

    3 octobre 2018, par Piki

    I am trying to access the re-muxed video data stream using the Xabe.FFmpeg library. Looking at the source, FFmpegWrapper specifically it looks like it is calling ProcessOutputData event only when the process which runs ffmpeg receives ErrorDataReceived. I tried hooking this to OutputDataReceived, however sill no luck.
    Any idea how I could get to the video stream bytes output from ffmepg console (or library) from a C# code ?
    Thanks !

  • Access Violation at avcodec_encode_video2()

    23 mars 2016, par bot1131357

    I am trying to understand the FFmpeg API by following online examples available but it seems that the FFmpeg API has changed over time, making most of the examples obsolete ; I hope some of you can help me make more sense of the FFmpeg API examples.

    I am currently trying to understand the encoding-example from FFmpeg, but I am getting an Access Violation error at this line :

    out_size = avcodec_encode_video2(codecCtx, &avpkt, picture, &got_packet);

    where I get "Unhandled exception at 0x77c29e42 in test01_encode.exe : 0xC0000005 : Access violation reading location 0xccccccc8." from Visual Studio.

    I understand that avcodec_encode_video() is deprecated in favour of avcodec_encode_video2(), which uses AVPacket. I’ve allocated a buffer to data member of AVPacket and set its size, but still the same. What did I miss ?

    The library that I’m using is ffmpeg-20160219-git-98a0053-win32-dev. I would really really appreciate if you could help me out of this confusion.

    (Side : What does it mean by "get delayed frames" and why are we encoding by specifying AVFrame* parameter as NULL ?)

    /*
    * Video encoding example
    */
    char filename[] = "test.mpg";
    int main(int argc, char** argv)
    {
       AVCodec *codec;
       AVCodecContext *codecCtx= NULL;
       int i, out_size, size, x, y, outbuf_size;
       FILE *f;
       AVFrame *picture;
       uint8_t *outbuf, *picture_buf;

       printf("Video encoding\n");

       // Register all formats and codecs
       av_register_all();

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

       codecCtx= avcodec_alloc_context3(codec);
       picture= av_frame_alloc();

       /* put sample parameters */
       codecCtx->bit_rate = 400000;
       /* resolution must be a multiple of two */
       codecCtx->width = 352;
       codecCtx->height = 288;
       /* frames per second */
       //codecCtx->time_base= (AVRational){1,25};
       codecCtx->time_base.num = 1;
       codecCtx->time_base.den = 25;

       codecCtx->gop_size = 10; /* emit one intra frame every ten frames */
       codecCtx->max_b_frames=1;
       codecCtx->pix_fmt = AV_PIX_FMT_YUV420P;

       /* open it */
       if (avcodec_open2(codecCtx, codec, NULL) < 0) {
           fprintf(stderr, "could not open codec\n");
           exit(1);
       }

       fopen_s(&f,filename, "wb");
       if (!f) {
           fprintf(stderr, "could not open %s\n", filename);
           exit(1);
       }

       /* alloc image and output buffer */
       outbuf_size = 100000;
       outbuf = (uint8_t*) malloc(outbuf_size);
       size = codecCtx->width * codecCtx->height;
       picture_buf = (uint8_t*) malloc((size * 3) / 2); /* size for YUV 420 */

       picture->data[0] = picture_buf;
       picture->data[1] = picture->data[0] + size;
       picture->data[2] = picture->data[1] + size / 4;
       picture->linesize[0] = codecCtx->width;
       picture->linesize[1] = codecCtx->width / 2;
       picture->linesize[2] = codecCtx->width / 2;

       picture->width = codecCtx->width;
       picture->height = codecCtx->height;
       picture->format = codecCtx->pix_fmt;

       AVPacket avpkt;
       int got_packet;

       avpkt.size=av_image_get_buffer_size(codecCtx->pix_fmt, codecCtx->width,
                       codecCtx->height,1);    
       avpkt.data = (uint8_t *)av_malloc(avpkt.size*sizeof(uint8_t));

       /* encode 1 second of video */
       for(i=0;i<25;i++) {
           fflush(stdout);
           /* prepare a dummy image */
           /* Y */
           for(y=0;yheight;y++) {
               for(x=0;xwidth;x++) {
                   picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
               }
           }

           /* Cb and Cr */
           for(y=0;yheight/2;y++) {
               for(x=0;xwidth/2;x++) {
                   picture->data[1][y * picture->linesize[1] + x] = 128 + y + i * 2;
                   picture->data[2][y * picture->linesize[2] + x] = 64 + x + i * 5;
               }
           }

           /* encode the image */
           //out_size = avcodec_encode_video(codecCtx, outbuf, outbuf_size, picture);
           // <access violation="violation">
           out_size = avcodec_encode_video2(codecCtx, &amp;avpkt, picture, &amp;got_packet);
           printf("encoding frame %3d (size=%5d)\n", i, out_size);
           //fwrite(outbuf, 1, out_size, f);
           fwrite(avpkt.data, 1, avpkt.size, f);
       }

       /* get the delayed frames */
       for(; out_size; i++) {
           fflush(stdout);

           //out_size = avcodec_encode_video(codecCtx, outbuf, outbuf_size, NULL);
           out_size = avcodec_encode_video2(codecCtx, &amp;avpkt, NULL, &amp;got_packet);
           printf("write frame %3d (size=%5d)\n", i, out_size);
           //fwrite(outbuf, 1, out_size, f);
           fwrite(avpkt.data, 1, avpkt.size, f);
       }

       /* add sequence end code to have a real mpeg file */
       outbuf[0] = 0x00;
       outbuf[1] = 0x00;
       outbuf[2] = 0x01;
       outbuf[3] = 0xb7;
       fwrite(outbuf, 1, 4, f);
       fclose(f);
       free(picture_buf);
       free(outbuf);

       avcodec_close(codecCtx);
       av_free(codecCtx);
       av_free(picture);
       printf("\n");
    }
    </access>
  • Revision c0856b98cc : Merge "Fixing out of bounds access in frame_refs[] array."

    30 janvier 2014, par Yaowu Xu

    Merge "Fixing out of bounds access in frame_refs[] array."