Recherche avancée

Médias (91)

Autres articles (29)

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • Gestion de la ferme

    2 mars 2010, par

    La ferme est gérée dans son ensemble par des "super admins".
    Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
    Dans un premier temps il utilise le plugin "Gestion de mutualisation"

  • MediaSPIP Core : La Configuration

    9 novembre 2010, par

    MediaSPIP Core fournit par défaut trois pages différentes de configuration (ces pages utilisent le plugin de configuration CFG pour fonctionner) : une page spécifique à la configuration générale du squelettes ; une page spécifique à la configuration de la page d’accueil du site ; une page spécifique à la configuration des secteurs ;
    Il fournit également une page supplémentaire qui n’apparait que lorsque certains plugins sont activés permettant de contrôler l’affichage et les fonctionnalités spécifiques (...)

Sur d’autres sites (4594)

  • How to fix ffmpeg's offical tutorials03 bug that sound does't work well ?

    31 janvier 2019, par xiaodai

    I want to learn to make a player with ffmpeg and sdl. The tutorial I used is this.[http://dranger.com/ffmpeg/tutorial03.html] Though I have resampled the audio from decode stream, the sound still plays with loud noise.

    I have no ideas to fix it anymore.

    I used the following :

    • the latest ffmpeg and sdl1
    • Visual Studio 2010
    // tutorial03.c
    // A pedagogical video player that will stream through every video frame as fast as it can
    // and play audio (out of sync).
    //
    // This tutorial was written by Stephen Dranger (dranger@gmail.com).
    //
    // Code based on FFplay, Copyright (c) 2003 Fabrice Bellard,
    // and a tutorial by Martin Bohme (boehme@inb.uni-luebeckREMOVETHIS.de)
    // Tested on Gentoo, CVS version 5/01/07 compiled with GCC 4.1.1
    //
    // Use the Makefile to build all examples.
    //
    // Run using
    // tutorial03 myvideofile.mpg
    //
    // to play the stream on your screen.

    extern "C"{
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libswscale></libswscale>swscale.h>
    #include <libavutil></libavutil>channel_layout.h>
    #include <libavutil></libavutil>common.h>
    #include <libavutil></libavutil>frame.h>
    #include <libavutil></libavutil>samplefmt.h>
    #include "libswresample/swresample.h"

    #include <sdl></sdl>SDL.h>
    #include <sdl></sdl>SDL_thread.h>
    };
    #ifdef __WIN32__
    #undef main /* Prevents SDL from overriding main() */
    #endif

    #include

    #define SDL_AUDIO_BUFFER_SIZE 1024
    #define MAX_AUDIO_FRAME_SIZE 192000

    struct SwrContext *audio_swrCtx;
    FILE *pFile=fopen("output.pcm", "wb");
    FILE *pFile_stream=fopen("output_stream.pcm","wb");
    int audio_len;
    typedef struct PacketQueue {
       AVPacketList *first_pkt, *last_pkt;
       int nb_packets;
       int size;
       SDL_mutex *mutex;
       SDL_cond *cond;
    } PacketQueue;

    PacketQueue audioq;

    int quit = 0;

    void packet_queue_init(PacketQueue *q) {
       memset(q, 0, sizeof(PacketQueue));
       q->mutex = SDL_CreateMutex();
       q->cond = SDL_CreateCond();
    }

    int packet_queue_put(PacketQueue *q, AVPacket *pkt) {

       AVPacketList *pkt1;

       if(av_dup_packet(pkt) &lt; 0) {
           return -1;
       }

       pkt1 = (AVPacketList *)av_malloc(sizeof(AVPacketList));

       if(!pkt1) {
           return -1;
       }

       pkt1->pkt = *pkt;
       pkt1->next = NULL;


       SDL_LockMutex(q->mutex);

       if(!q->last_pkt) {
           q->first_pkt = pkt1;
       }

       else {
           q->last_pkt->next = pkt1;
       }

       q->last_pkt = pkt1;
       q->nb_packets++;
       q->size += pkt1->pkt.size;
       SDL_CondSignal(q->cond);

       SDL_UnlockMutex(q->mutex);
       return 0;
    }

    static int packet_queue_get(PacketQueue *q, AVPacket *pkt, int block) {
       AVPacketList *pkt1;
       int ret;

       SDL_LockMutex(q->mutex);

       for(;;) {

           if(quit) {
               ret = -1;
               break;
           }

           pkt1 = q->first_pkt;

           if(pkt1) {
               q->first_pkt = pkt1->next;

               if(!q->first_pkt) {
                   q->last_pkt = NULL;
               }

               q->nb_packets--;
               q->size -= pkt1->pkt.size;
               *pkt = pkt1->pkt;
               av_free(pkt1);
               ret = 1;
               break;

           } else if(!block) {
               ret = 0;
               break;

           } else {
               SDL_CondWait(q->cond, q->mutex);
           }
       }

       SDL_UnlockMutex(q->mutex);
       return ret;
    }

    int audio_decode_frame(AVCodecContext *aCodecCtx, uint8_t *audio_buf, int buf_size) {


        static AVPacket pkt;
        static uint8_t *audio_pkt_data = NULL;
        static int audio_pkt_size = 0;
        static AVFrame frame;

        int len1, data_size = 0;

        for(;;) {
            while(audio_pkt_size > 0) {
                int got_frame = 0;
                len1 = avcodec_decode_audio4(aCodecCtx, &amp;frame, &amp;got_frame, &amp;pkt);

                if(len1 &lt; 0) {
                    /* if error, skip frame */
                    audio_pkt_size = 0;
                    break;
                }
                audio_pkt_data += len1;
                audio_pkt_size -= len1;
                data_size = 0;
                /*

                au_convert_ctx = swr_alloc();
                au_convert_ctx=swr_alloc_set_opts(au_convert_ctx,out_channel_layout, out_sample_fmt, out_sample_rate,
                in_channel_layout,pCodecCtx->sample_fmt , pCodecCtx->sample_rate,0, NULL);
                swr_init(au_convert_ctx);

                swr_convert(au_convert_ctx,&amp;out_buffer, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)pFrame->data , pFrame->nb_samples);


                */
                if( got_frame ) {
                    audio_swrCtx=swr_alloc();
                    audio_swrCtx=swr_alloc_set_opts(audio_swrCtx,  // we're allocating a new context
                        AV_CH_LAYOUT_STEREO,//AV_CH_LAYOUT_STEREO,     // out_ch_layout
                        AV_SAMPLE_FMT_S16,         // out_sample_fmt
                        44100, // out_sample_rate
                        aCodecCtx->channel_layout, // in_ch_layout
                        aCodecCtx->sample_fmt,     // in_sample_fmt
                        aCodecCtx->sample_rate,    // in_sample_rate
                        0,                         // log_offset
                        NULL);                     // log_ctx
                    int ret=swr_init(audio_swrCtx);
                    int out_samples = av_rescale_rnd(swr_get_delay(audio_swrCtx, aCodecCtx->sample_rate) + 1024, 44100, aCodecCtx->sample_rate, AV_ROUND_UP);
                    ret=swr_convert(audio_swrCtx,&amp;audio_buf, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)frame.data ,frame.nb_samples);
                    data_size =
                        av_samples_get_buffer_size
                        (
                        &amp;data_size,
                        av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO),
                        ret,
                        AV_SAMPLE_FMT_S16,
                        1
                        );
                     fwrite(audio_buf, 1, data_size, pFile);
                    //memcpy(audio_buf, frame.data[0], data_size);
                    swr_free(&amp;audio_swrCtx);
                }

                if(data_size &lt;= 0) {
                    /* No data yet, get more frames */
                    continue;
                }

                /* We have data, return it and come back for more later */
                return data_size;
            }

            if(pkt.data) {
                av_free_packet(&amp;pkt);
            }

            if(quit) {
                return -1;
            }

            if(packet_queue_get(&amp;audioq, &amp;pkt, 1) &lt; 0) {
                return -1;
            }

            audio_pkt_data = pkt.data;
            audio_pkt_size = pkt.size;
        }
    }



    void audio_callback(void *userdata, Uint8 *stream, int len) {

       AVCodecContext *aCodecCtx = (AVCodecContext *)userdata;
       int /*audio_len,*/ audio_size;

       static uint8_t audio_buf[(MAX_AUDIO_FRAME_SIZE * 3) / 2];
       static unsigned int audio_buf_size = 0;
       static unsigned int audio_buf_index = 0;

       //SDL_memset(stream, 0, len);
       while(len > 0) {

           if(audio_buf_index >= audio_buf_size) {
               /* We have already sent all our data; get more */
               audio_size = audio_decode_frame(aCodecCtx, audio_buf, audio_buf_size);

               if(audio_size &lt; 0) {
                   /* If error, output silence */
                   audio_buf_size = 1024; // arbitrary?
                   memset(audio_buf, 0, audio_buf_size);

               } else {
                   audio_buf_size = audio_size;
               }

               audio_buf_index = 0;
           }

           audio_len = audio_buf_size - audio_buf_index;

           if(audio_len > len) {
               audio_len = len;
           }

           memcpy(stream, (uint8_t *)audio_buf , audio_len);
           //SDL_MixAudio(stream,(uint8_t*)audio_buf,audio_len,SDL_MIX_MAXVOLUME);
           fwrite(audio_buf, 1, audio_len, pFile_stream);
           len -= audio_len;
           stream += audio_len;
           audio_buf_index += audio_len;
           audio_len=len;
       }
    }

    int main(int argc, char *argv[]) {
       AVFormatContext *pFormatCtx = NULL;
       int             i, videoStream, audioStream;
       AVCodecContext  *pCodecCtx = NULL;
       AVCodec         *pCodec = NULL;
       AVFrame         *pFrame = NULL;
       AVPacket        packet;
       int             frameFinished;

       //float           aspect_ratio;

       AVCodecContext  *aCodecCtx = NULL;
       AVCodec         *aCodec = NULL;

       SDL_Overlay     *bmp = NULL;
       SDL_Surface     *screen = NULL;
       SDL_Rect        rect;
       SDL_Event       event;
       SDL_AudioSpec   wanted_spec, spec;

       struct SwsContext   *sws_ctx            = NULL;
       AVDictionary        *videoOptionsDict   = NULL;
       AVDictionary        *audioOptionsDict   = NULL;

       if(argc &lt; 2) {
               fprintf(stderr, "Usage: test <file>\n");
               exit(1);
           }

           // Register all formats and codecs
       av_register_all();

       if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
           fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
           exit(1);
       }

       // Open video file
       if(avformat_open_input(&amp;pFormatCtx, argv[1]/*"file.mov"*/, NULL, NULL) != 0) {
           return -1;    // Couldn't open file
       }

       // Retrieve stream information
       if(avformat_find_stream_info(pFormatCtx, NULL) &lt; 0) {
           return -1;    // Couldn't find stream information
       }

       // Dump information about file onto standard error
       av_dump_format(pFormatCtx, 0, argv[1], 0);

       // Find the first video stream
       videoStream = -1;
       audioStream = -1;

       for(i = 0; i &lt; pFormatCtx->nb_streams; i++) {
           if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO &amp;&amp;
               videoStream &lt; 0) {
                   videoStream = i;
           }

           if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO &amp;&amp;
               audioStream &lt; 0) {
                   audioStream = i;
           }
       }

       if(videoStream == -1) {
           return -1;    // Didn't find a video stream
       }

       if(audioStream == -1) {
           return -1;
       }

       aCodecCtx = pFormatCtx->streams[audioStream]->codec;
       // Set audio settings from codec info
       wanted_spec.freq = 44100;
       wanted_spec.format = AUDIO_S16SYS;
       wanted_spec.channels = av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO);;
       wanted_spec.silence = 0;
       wanted_spec.samples = 1024;
       wanted_spec.callback = audio_callback;
       wanted_spec.userdata = aCodecCtx;

       if(SDL_OpenAudio(&amp;wanted_spec, &amp;spec) &lt; 0) {
           fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
           return -1;
       }


       aCodec = avcodec_find_decoder(aCodecCtx->codec_id);

       if(!aCodec) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1;
       }

       avcodec_open2(aCodecCtx, aCodec, &amp;audioOptionsDict);

       // audio_st = pFormatCtx->streams[index]
       packet_queue_init(&amp;audioq);
       SDL_PauseAudio(0);

       // Get a pointer to the codec context for the video stream
       pCodecCtx = pFormatCtx->streams[videoStream]->codec;

       // Find the decoder for the video stream
       pCodec = avcodec_find_decoder(pCodecCtx->codec_id);

       if(pCodec == NULL) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1; // Codec not found
       }

       // Open codec
       if(avcodec_open2(pCodecCtx, pCodec, &amp;videoOptionsDict) &lt; 0) {
           return -1;    // Could not open codec
       }

       // Allocate video frame
       pFrame = av_frame_alloc();

       // Make a screen to put our video

    #ifndef __DARWIN__
       screen = SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->height, 0, 0);
    #else
       screen = SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->height, 24, 0);
    #endif

       if(!screen) {
           fprintf(stderr, "SDL: could not set video mode - exiting\n");
           exit(1);
       }

       // Allocate a place to put our YUV image on that screen
       bmp = SDL_CreateYUVOverlay(pCodecCtx->width,
           pCodecCtx->height,
           SDL_YV12_OVERLAY,
           screen);
       sws_ctx =
           sws_getContext
           (
           pCodecCtx->width,
           pCodecCtx->height,
           pCodecCtx->pix_fmt,
           pCodecCtx->width,
           pCodecCtx->height,
           PIX_FMT_YUV420P,
           SWS_BILINEAR,
           NULL,
           NULL,
           NULL
           );


       // Read frames and save first five frames to disk
       i = 0;

       while(av_read_frame(pFormatCtx, &amp;packet) >= 0) {
           // Is this a packet from the video stream?
           if(packet.stream_index == videoStream) {
               // Decode video frame
               avcodec_decode_video2(pCodecCtx, pFrame, &amp;frameFinished,
                   &amp;packet);

               // Did we get a video frame?
               if(frameFinished) {
                   SDL_LockYUVOverlay(bmp);

                   AVPicture pict;
                   pict.data[0] = bmp->pixels[0];
                   pict.data[1] = bmp->pixels[2];
                   pict.data[2] = bmp->pixels[1];

                   pict.linesize[0] = bmp->pitches[0];
                   pict.linesize[1] = bmp->pitches[2];
                   pict.linesize[2] = bmp->pitches[1];

                   // Convert the image into YUV format that SDL uses
                   sws_scale
                       (
                       sws_ctx,
                       (uint8_t const * const *)pFrame->data,
                       pFrame->linesize,
                       0,
                       pCodecCtx->height,
                       pict.data,
                       pict.linesize
                       );

                   SDL_UnlockYUVOverlay(bmp);

                   rect.x = 0;
                   rect.y = 0;
                   rect.w = pCodecCtx->width;
                   rect.h = pCodecCtx->height;
                   SDL_DisplayYUVOverlay(bmp, &amp;rect);
                   SDL_Delay(40);
                   av_free_packet(&amp;packet);
               }

           } else if(packet.stream_index == audioStream) {
               packet_queue_put(&amp;audioq, &amp;packet);

           } else {
               av_free_packet(&amp;packet);
           }

           // Free the packet that was allocated by av_read_frame
           SDL_PollEvent(&amp;event);

           switch(event.type) {
           case SDL_QUIT:
               quit = 1;
               SDL_Quit();
               exit(0);
               break;

           default:
               break;
           }

       }

       // Free the YUV frame
       av_free(pFrame);
       /*swr_free(&amp;audio_swrCtx);*/
       // Close the codec
       avcodec_close(pCodecCtx);
       fclose(pFile);
       fclose(pFile_stream);
       // Close the video file
       avformat_close_input(&amp;pFormatCtx);

       return 0;
    }
    </file>

    I hope to play normally.

  • How to fix ffmpeg's official tutorials03 bug that sound does't work well ? [on hold]

    31 janvier 2019, par xiaodai

    I want to make a player with ffmpeg and sdl. The tutorial I used is this though I have resampled the audio from decode stream, the sound still plays with loud noise.

    I have no ideas to fix it anymore.

    I used the following :

    • the latest ffmpeg and sdl1
    • Visual Studio 2010
    // tutorial03.c
    // A pedagogical video player that will stream through every video frame as fast as it can
    // and play audio (out of sync).
    //
    // This tutorial was written by Stephen Dranger (dranger@gmail.com).
    //
    // Code based on FFplay, Copyright (c) 2003 Fabrice Bellard,
    // and a tutorial by Martin Bohme (boehme@inb.uni-luebeckREMOVETHIS.de)
    // Tested on Gentoo, CVS version 5/01/07 compiled with GCC 4.1.1
    //
    // Use the Makefile to build all examples.
    //
    // Run using
    // tutorial03 myvideofile.mpg
    //
    // to play the stream on your screen.

    extern "C"{
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libswscale></libswscale>swscale.h>
    #include <libavutil></libavutil>channel_layout.h>
    #include <libavutil></libavutil>common.h>
    #include <libavutil></libavutil>frame.h>
    #include <libavutil></libavutil>samplefmt.h>
    #include "libswresample/swresample.h"

    #include <sdl></sdl>SDL.h>
    #include <sdl></sdl>SDL_thread.h>
    };
    #ifdef __WIN32__
    #undef main /* Prevents SDL from overriding main() */
    #endif

    #include

    #define SDL_AUDIO_BUFFER_SIZE 1024
    #define MAX_AUDIO_FRAME_SIZE 192000

    struct SwrContext *audio_swrCtx;
    FILE *pFile=fopen("output.pcm", "wb");
    FILE *pFile_stream=fopen("output_stream.pcm","wb");
    int audio_len;
    typedef struct PacketQueue {
       AVPacketList *first_pkt, *last_pkt;
       int nb_packets;
       int size;
       SDL_mutex *mutex;
       SDL_cond *cond;
    } PacketQueue;

    PacketQueue audioq;

    int quit = 0;

    void packet_queue_init(PacketQueue *q) {
       memset(q, 0, sizeof(PacketQueue));
       q->mutex = SDL_CreateMutex();
       q->cond = SDL_CreateCond();
    }

    int packet_queue_put(PacketQueue *q, AVPacket *pkt) {

       AVPacketList *pkt1;

       if(av_dup_packet(pkt) &lt; 0) {
           return -1;
       }

       pkt1 = (AVPacketList *)av_malloc(sizeof(AVPacketList));

       if(!pkt1) {
           return -1;
       }

       pkt1->pkt = *pkt;
       pkt1->next = NULL;


       SDL_LockMutex(q->mutex);

       if(!q->last_pkt) {
           q->first_pkt = pkt1;
       }

       else {
           q->last_pkt->next = pkt1;
       }

       q->last_pkt = pkt1;
       q->nb_packets++;
       q->size += pkt1->pkt.size;
       SDL_CondSignal(q->cond);

       SDL_UnlockMutex(q->mutex);
       return 0;
    }

    static int packet_queue_get(PacketQueue *q, AVPacket *pkt, int block) {
       AVPacketList *pkt1;
       int ret;

       SDL_LockMutex(q->mutex);

       for(;;) {

           if(quit) {
               ret = -1;
               break;
           }

           pkt1 = q->first_pkt;

           if(pkt1) {
               q->first_pkt = pkt1->next;

               if(!q->first_pkt) {
                   q->last_pkt = NULL;
               }

               q->nb_packets--;
               q->size -= pkt1->pkt.size;
               *pkt = pkt1->pkt;
               av_free(pkt1);
               ret = 1;
               break;

           } else if(!block) {
               ret = 0;
               break;

           } else {
               SDL_CondWait(q->cond, q->mutex);
           }
       }

       SDL_UnlockMutex(q->mutex);
       return ret;
    }

    int audio_decode_frame(AVCodecContext *aCodecCtx, uint8_t *audio_buf, int buf_size) {


        static AVPacket pkt;
        static uint8_t *audio_pkt_data = NULL;
        static int audio_pkt_size = 0;
        static AVFrame frame;

        int len1, data_size = 0;

        for(;;) {
            while(audio_pkt_size > 0) {
                int got_frame = 0;
                len1 = avcodec_decode_audio4(aCodecCtx, &amp;frame, &amp;got_frame, &amp;pkt);

                if(len1 &lt; 0) {
                    /* if error, skip frame */
                    audio_pkt_size = 0;
                    break;
                }
                audio_pkt_data += len1;
                audio_pkt_size -= len1;
                data_size = 0;
                /*

                au_convert_ctx = swr_alloc();
                au_convert_ctx=swr_alloc_set_opts(au_convert_ctx,out_channel_layout, out_sample_fmt, out_sample_rate,
                in_channel_layout,pCodecCtx->sample_fmt , pCodecCtx->sample_rate,0, NULL);
                swr_init(au_convert_ctx);

                swr_convert(au_convert_ctx,&amp;out_buffer, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)pFrame->data , pFrame->nb_samples);


                */
                if( got_frame ) {
                    audio_swrCtx=swr_alloc();
                    audio_swrCtx=swr_alloc_set_opts(audio_swrCtx,  // we're allocating a new context
                        AV_CH_LAYOUT_STEREO,//AV_CH_LAYOUT_STEREO,     // out_ch_layout
                        AV_SAMPLE_FMT_S16,         // out_sample_fmt
                        44100, // out_sample_rate
                        aCodecCtx->channel_layout, // in_ch_layout
                        aCodecCtx->sample_fmt,     // in_sample_fmt
                        aCodecCtx->sample_rate,    // in_sample_rate
                        0,                         // log_offset
                        NULL);                     // log_ctx
                    int ret=swr_init(audio_swrCtx);
                    int out_samples = av_rescale_rnd(swr_get_delay(audio_swrCtx, aCodecCtx->sample_rate) + 1024, 44100, aCodecCtx->sample_rate, AV_ROUND_UP);
                    ret=swr_convert(audio_swrCtx,&amp;audio_buf, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)frame.data ,frame.nb_samples);
                    data_size =
                        av_samples_get_buffer_size
                        (
                        &amp;data_size,
                        av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO),
                        ret,
                        AV_SAMPLE_FMT_S16,
                        1
                        );
                     fwrite(audio_buf, 1, data_size, pFile);
                    //memcpy(audio_buf, frame.data[0], data_size);
                    swr_free(&amp;audio_swrCtx);
                }

                if(data_size &lt;= 0) {
                    /* No data yet, get more frames */
                    continue;
                }

                /* We have data, return it and come back for more later */
                return data_size;
            }

            if(pkt.data) {
                av_free_packet(&amp;pkt);
            }

            if(quit) {
                return -1;
            }

            if(packet_queue_get(&amp;audioq, &amp;pkt, 1) &lt; 0) {
                return -1;
            }

            audio_pkt_data = pkt.data;
            audio_pkt_size = pkt.size;
        }
    }



    void audio_callback(void *userdata, Uint8 *stream, int len) {

       AVCodecContext *aCodecCtx = (AVCodecContext *)userdata;
       int /*audio_len,*/ audio_size;

       static uint8_t audio_buf[(MAX_AUDIO_FRAME_SIZE * 3) / 2];
       static unsigned int audio_buf_size = 0;
       static unsigned int audio_buf_index = 0;

       //SDL_memset(stream, 0, len);
       while(len > 0) {

           if(audio_buf_index >= audio_buf_size) {
               /* We have already sent all our data; get more */
               audio_size = audio_decode_frame(aCodecCtx, audio_buf, audio_buf_size);

               if(audio_size &lt; 0) {
                   /* If error, output silence */
                   audio_buf_size = 1024; // arbitrary?
                   memset(audio_buf, 0, audio_buf_size);

               } else {
                   audio_buf_size = audio_size;
               }

               audio_buf_index = 0;
           }

           audio_len = audio_buf_size - audio_buf_index;

           if(audio_len > len) {
               audio_len = len;
           }

           memcpy(stream, (uint8_t *)audio_buf , audio_len);
           //SDL_MixAudio(stream,(uint8_t*)audio_buf,audio_len,SDL_MIX_MAXVOLUME);
           fwrite(audio_buf, 1, audio_len, pFile_stream);
           len -= audio_len;
           stream += audio_len;
           audio_buf_index += audio_len;
           audio_len=len;
       }
    }

    int main(int argc, char *argv[]) {
       AVFormatContext *pFormatCtx = NULL;
       int             i, videoStream, audioStream;
       AVCodecContext  *pCodecCtx = NULL;
       AVCodec         *pCodec = NULL;
       AVFrame         *pFrame = NULL;
       AVPacket        packet;
       int             frameFinished;

       //float           aspect_ratio;

       AVCodecContext  *aCodecCtx = NULL;
       AVCodec         *aCodec = NULL;

       SDL_Overlay     *bmp = NULL;
       SDL_Surface     *screen = NULL;
       SDL_Rect        rect;
       SDL_Event       event;
       SDL_AudioSpec   wanted_spec, spec;

       struct SwsContext   *sws_ctx            = NULL;
       AVDictionary        *videoOptionsDict   = NULL;
       AVDictionary        *audioOptionsDict   = NULL;

       if(argc &lt; 2) {
               fprintf(stderr, "Usage: test <file>\n");
               exit(1);
           }

           // Register all formats and codecs
       av_register_all();

       if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
           fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
           exit(1);
       }

       // Open video file
       if(avformat_open_input(&amp;pFormatCtx, argv[1]/*"file.mov"*/, NULL, NULL) != 0) {
           return -1;    // Couldn't open file
       }

       // Retrieve stream information
       if(avformat_find_stream_info(pFormatCtx, NULL) &lt; 0) {
           return -1;    // Couldn't find stream information
       }

       // Dump information about file onto standard error
       av_dump_format(pFormatCtx, 0, argv[1], 0);

       // Find the first video stream
       videoStream = -1;
       audioStream = -1;

       for(i = 0; i &lt; pFormatCtx->nb_streams; i++) {
           if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO &amp;&amp;
               videoStream &lt; 0) {
                   videoStream = i;
           }

           if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO &amp;&amp;
               audioStream &lt; 0) {
                   audioStream = i;
           }
       }

       if(videoStream == -1) {
           return -1;    // Didn't find a video stream
       }

       if(audioStream == -1) {
           return -1;
       }

       aCodecCtx = pFormatCtx->streams[audioStream]->codec;
       // Set audio settings from codec info
       wanted_spec.freq = 44100;
       wanted_spec.format = AUDIO_S16SYS;
       wanted_spec.channels = av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO);;
       wanted_spec.silence = 0;
       wanted_spec.samples = 1024;
       wanted_spec.callback = audio_callback;
       wanted_spec.userdata = aCodecCtx;

       if(SDL_OpenAudio(&amp;wanted_spec, &amp;spec) &lt; 0) {
           fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
           return -1;
       }


       aCodec = avcodec_find_decoder(aCodecCtx->codec_id);

       if(!aCodec) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1;
       }

       avcodec_open2(aCodecCtx, aCodec, &amp;audioOptionsDict);

       // audio_st = pFormatCtx->streams[index]
       packet_queue_init(&amp;audioq);
       SDL_PauseAudio(0);

       // Get a pointer to the codec context for the video stream
       pCodecCtx = pFormatCtx->streams[videoStream]->codec;

       // Find the decoder for the video stream
       pCodec = avcodec_find_decoder(pCodecCtx->codec_id);

       if(pCodec == NULL) {
           fprintf(stderr, "Unsupported codec!\n");
           return -1; // Codec not found
       }

       // Open codec
       if(avcodec_open2(pCodecCtx, pCodec, &amp;videoOptionsDict) &lt; 0) {
           return -1;    // Could not open codec
       }

       // Allocate video frame
       pFrame = av_frame_alloc();

       // Make a screen to put our video

    #ifndef __DARWIN__
       screen = SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->height, 0, 0);
    #else
       screen = SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->height, 24, 0);
    #endif

       if(!screen) {
           fprintf(stderr, "SDL: could not set video mode - exiting\n");
           exit(1);
       }

       // Allocate a place to put our YUV image on that screen
       bmp = SDL_CreateYUVOverlay(pCodecCtx->width,
           pCodecCtx->height,
           SDL_YV12_OVERLAY,
           screen);
       sws_ctx =
           sws_getContext
           (
           pCodecCtx->width,
           pCodecCtx->height,
           pCodecCtx->pix_fmt,
           pCodecCtx->width,
           pCodecCtx->height,
           PIX_FMT_YUV420P,
           SWS_BILINEAR,
           NULL,
           NULL,
           NULL
           );


       // Read frames and save first five frames to disk
       i = 0;

       while(av_read_frame(pFormatCtx, &amp;packet) >= 0) {
           // Is this a packet from the video stream?
           if(packet.stream_index == videoStream) {
               // Decode video frame
               avcodec_decode_video2(pCodecCtx, pFrame, &amp;frameFinished,
                   &amp;packet);

               // Did we get a video frame?
               if(frameFinished) {
                   SDL_LockYUVOverlay(bmp);

                   AVPicture pict;
                   pict.data[0] = bmp->pixels[0];
                   pict.data[1] = bmp->pixels[2];
                   pict.data[2] = bmp->pixels[1];

                   pict.linesize[0] = bmp->pitches[0];
                   pict.linesize[1] = bmp->pitches[2];
                   pict.linesize[2] = bmp->pitches[1];

                   // Convert the image into YUV format that SDL uses
                   sws_scale
                       (
                       sws_ctx,
                       (uint8_t const * const *)pFrame->data,
                       pFrame->linesize,
                       0,
                       pCodecCtx->height,
                       pict.data,
                       pict.linesize
                       );

                   SDL_UnlockYUVOverlay(bmp);

                   rect.x = 0;
                   rect.y = 0;
                   rect.w = pCodecCtx->width;
                   rect.h = pCodecCtx->height;
                   SDL_DisplayYUVOverlay(bmp, &amp;rect);
                   SDL_Delay(40);
                   av_free_packet(&amp;packet);
               }

           } else if(packet.stream_index == audioStream) {
               packet_queue_put(&amp;audioq, &amp;packet);

           } else {
               av_free_packet(&amp;packet);
           }

           // Free the packet that was allocated by av_read_frame
           SDL_PollEvent(&amp;event);

           switch(event.type) {
           case SDL_QUIT:
               quit = 1;
               SDL_Quit();
               exit(0);
               break;

           default:
               break;
           }

       }

       // Free the YUV frame
       av_free(pFrame);
       /*swr_free(&amp;audio_swrCtx);*/
       // Close the codec
       avcodec_close(pCodecCtx);
       fclose(pFile);
       fclose(pFile_stream);
       // Close the video file
       avformat_close_input(&amp;pFormatCtx);

       return 0;
    }
    </file>

    I hope to play normally.

  • ffmpeg massive error spamming from FritzBox rtsp stream

    19 février 2019, par itzaiiro

    Im trying to offer a rtsp live TV stream via rtmp to my family, since the Fritz Box (which is offering the stream) has only 4 tuners -> at most 4 streams can be watched simultaneously.
    Im using ffmpeg to prepare the stream as dash stream and send it to my rtmp nginx. When i run ffmpeg im experiencing heavy image and audio artifacts in the final stream and error spams of doom in the console. I couldn’t find anything specific to my case on google. I read on the internet that AVM barely implemented the rtsp protocoll enough to get it to work with vlc mediaplayer.

    launch param :

    ffmpeg -i "rtsp://192.168.178.1:554/?avm=1&amp;freq=114&amp;bw=8&amp;msys=dvbc&amp;mtype=256qam&amp;sr=6900&amp;specinv=1&amp;pids=0,16,17,18,20,260,543,544,546,548,1621" -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 500k -minrate 500k -maxrate 500k -bufsize 1000k -g 60 -s 640x360 -f flv rtmp://192.168.178.15/dash/pro_sieben_low -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 1500k -minrate 1500k -maxrate 1500k -bufsize 3000k -g 60 -s 1280x720 -f flv rtmp://192.168.178.15/dash/pro_sieben_med -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 10000k -g 60 -s 1920x1080 -f flv rtmp://192.168.178.15/dash/pro_sieben_high

    ffmpeg output (windows) :
    stored in pastebin
    https://pastebin.com/p4HAyBi5

    Is there anyway to get this under control ? The original stream is running good with vlc, but its unwatchable after its out of ffmpeg.

    Edit :
    I was running/testing this on my windows machine, but my target for this task is a ubuntu 16.04 so here ffmpeg on target with pthread support :

    ffmpeg -i "rtsp://192.168.178.1:554/?avm=1&amp;freq=114&amp;bw=8&amp;msys=dvbc&amp;mtype=256qam&amp;sr=6900&amp;specinv=1&amp;pids=0,16,17,18,20,260,543,544,546,548,1621" -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 500k -minrate 500k -maxrate 500k -bufsize 1000k -g 60 -s 640x360 -f flv rtmp://192.168.178.15/dash/pro_sieben_low -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 1500k -minrate 1500k -maxrate 1500k -bufsize 3000k -g 60 -s 1280x720 -f flv rtmp://192.168.178.15/dash/pro_sieben_med -sn -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 10000k -g 60 -s 1920x1080 -f flv rtmp://192.168.178.15/dash/pro_sieben_high
    ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
     configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
     libavutil      54. 31.100 / 54. 31.100
     libavcodec     56. 60.100 / 56. 60.100
     libavformat    56. 40.101 / 56. 40.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 40.101 /  5. 40.101
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  2.101 /  1.  2.101
     libpostproc    53.  3.100 / 53.  3.100
    [mpeg2video @ 0x167cde0] Invalid frame dimensions 0x0.
       Last message repeated 10 times
    [rtsp @ 0x1627c20] Could not find codec parameters for stream 4 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, rtsp, from 'rtsp://192.168.178.1:554/?avm=1&amp;freq=114&amp;bw=8&amp;msys=dvbc&amp;mtype=256qam&amp;sr=6900&amp;specinv=1&amp;pids=0,16,17,18,20,260,543,544,546,548,1621':
     Metadata:
       title           : SatIPServer:1 0,0,4
     Duration: N/A, start: 33786.528778, bitrate: N/A
     Program 12101
       Metadata:
         service_name    : ?▒RTL▒ Television
         service_provider: ?Unitymedia
     Program 12102
       Metadata:
         service_name    : ?SAT.1
         service_provider: ?Unitymedia
     Program 12103
       Metadata:
         service_name    : ?ProSieben
         service_provider: ?Unitymedia
       Stream #0:3: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
       Stream #0:2(deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s (clean effects)
       Stream #0:0(deu): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, 5.1(side), fltp, 384 kb/s (clean effects)
       Stream #0:1(deu,deu): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006), 492x250
       Stream #0:4: Unknown: none ([5][0][0][0] / 0x0005)
     Program 12104
       Metadata:
         service_name    : ?VOX
         service_provider: ?Unitymedia
     Program 12105
       Metadata:
         service_name    : ?RTL2
         service_provider: ?Unitymedia
     Program 12106
       Metadata:
         service_name    : ?kabel eins
         service_provider: ?Unitymedia
     Program 12107
       Metadata:
         service_name    : ?▒S▒uper▒ RTL▒
         service_provider: ?Unitymedia
     Program 12109
       Metadata:
         service_name    : ?ntv
         service_provider: ?Unitymedia
     Program 12113
       Metadata:
         service_name    : ?ProSieben MAXX
         service_provider: ?Unitymedia
     Program 20116
       Metadata:
         service_name    : ?SIXX
         service_provider: ?Unitymedia
    [libx264 @ 0x182b140] using SAR=1/1
    [libx264 @ 0x182b140] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x182b140] profile Constrained Baseline, level 3.0
    [libx264 @ 0x182b140] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=500 vbv_bufsize=1000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
    [libx264 @ 0x16e03c0] using SAR=1/1
    [libx264 @ 0x16e03c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x16e03c0] profile Constrained Baseline, level 3.1
    [libx264 @ 0x16e03c0] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=1500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=1500 vbv_bufsize=3000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
    [libx264 @ 0x16cc880] using SAR=1/1
    [libx264 @ 0x16cc880] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x16cc880] profile Constrained Baseline, level 4.0
    [libx264 @ 0x16cc880] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=5000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=5000 vbv_bufsize=10000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
    Output #0, flv, to 'rtmp://192.168.178.15/dash/pro_sieben_low':
     Metadata:
       title           : SatIPServer:1 0,0,4
       encoder         : Lavf56.40.101
       Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 500 kb/s, 25 fps, 1k tbn, 25 tbc
       Metadata:
         encoder         : Lavc56.60.100 libx264
       Stream #0:1(deu): Audio: aac ([10][0][0][0] / 0x000A), 48000 Hz, 5.1(side), fltp, 128 kb/s (clean effects)
       Metadata:
         encoder         : Lavc56.60.100 aac
    Output #1, flv, to 'rtmp://192.168.178.15/dash/pro_sieben_med':
     Metadata:
       title           : SatIPServer:1 0,0,4
       encoder         : Lavf56.40.101
       Stream #1:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 1500 kb/s, 25 fps, 1k tbn, 25 tbc
       Metadata:
         encoder         : Lavc56.60.100 libx264
       Stream #1:1(deu): Audio: aac ([10][0][0][0] / 0x000A), 48000 Hz, 5.1(side), fltp, 128 kb/s (clean effects)
       Metadata:
         encoder         : Lavc56.60.100 aac
    Output #2, flv, to 'rtmp://192.168.178.15/dash/pro_sieben_high':
     Metadata:
       title           : SatIPServer:1 0,0,4
       encoder         : Lavf56.40.101
       Stream #2:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 5000 kb/s, 25 fps, 1k tbn, 25 tbc
       Metadata:
         encoder         : Lavc56.60.100 libx264
       Stream #2:1(deu): Audio: aac ([10][0][0][0] / 0x000A), 48000 Hz, 5.1(side), fltp, 128 kb/s (clean effects)
       Metadata:
         encoder         : Lavc56.60.100 aac
    Stream mapping:
     Stream #0:3 -> #0:0 (mpeg2video (native) -> h264 (libx264))
     Stream #0:0 -> #0:1 (ac3 (native) -> aac (native))
     Stream #0:3 -> #1:0 (mpeg2video (native) -> h264 (libx264))
     Stream #0:0 -> #1:1 (ac3 (native) -> aac (native))
     Stream #0:3 -> #2:0 (mpeg2video (native) -> h264 (libx264))
     Stream #0:0 -> #2:1 (ac3 (native) -> aac (native))
    Press [q] to stop, [?] for help
    RTP: missed 2137 packets.0 q=26.0 q=23.0 size=     238kB time=00:00:04.91 bitrate= 397.3kbits/s
    [rtsp @ 0x1627c20] PES packet size mismatch
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 16
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 17
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 18
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 19
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 20
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 21
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 22
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 23
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 17 11
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 24
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 25
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 26
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 27
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 31
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 32
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 33
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 34
    [mpeg2video @ 0x16d72c0] invalid mb type in I Frame at 0 35
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 1125 DC, 1125 AC, 1125 MV errors in I frame
    RTP: missed 11 packets
    RTP: missed 37 packets
    [ac3 @ 0x1676bc0] exponent out-of-range
    [ac3 @ 0x1676bc0] error decoding the audio block
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    [ac3 @ 0x1676bc0] exponent out-of-range
    [ac3 @ 0x1676bc0] error decoding the audio block
    RTP: missed 21 packets
    RTP: missed 32 packets
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 1 4
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 1080 DC, 1080 AC, 1080 MV errors in B frame
    [mpeg2video @ 0x16d72c0] 00 motion_type at 21 27
    [mpeg2video @ 0x16d72c0] 00 motion_type at 2 26
    [mpeg2video @ 0x16d72c0] 00 motion_type at 0 27
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 2 1
    [mpeg2video @ 0x16d72c0] 00 motion_type at 5 2
    [mpeg2video @ 0x16d72c0] skip with previntra
    [mpeg2video @ 0x16d72c0] 00 motion_type at 2 4
    [mpeg2video @ 0x16d72c0] slice mismatch
    [mpeg2video @ 0x16d72c0] 00 motion_type at 1 6
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 3 7
    [mpeg2video @ 0x16d72c0] slice mismatch
    [mpeg2video @ 0x16d72c0] 00 motion_type at 37 9
    [mpeg2video @ 0x16d72c0] 00 motion_type at 1 10
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] 00 motion_type at 1 31
    [mpeg2video @ 0x16d72c0] 00 motion_type at 5 32
    [mpeg2video @ 0x16d72c0] 00 motion_type at 1 33
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 26 35
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 945 DC, 945 AC, 945 MV errors in B frame
    [rtsp @ 0x1627c20] PES packet size mismatchze=     294kB time=00:00:05.27 bitrate= 457.1kbits/s
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    [ac3 @ 0x1676bc0] exponent out-of-range
    [ac3 @ 0x1676bc0] error decoding the audio block
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    RTP: missed 38 packets25.0 q=26.0 q=22.0 size=     320kB time=00:00:11.18 bitrate= 234.3kbits/s
    RTP: missed 18 packets
    RTP: missed 9 packets
    RTP: missed 21 packets
    RTP: missed 9 packets
    [rtsp @ 0x1627c20] PES packet size mismatch
    [ac3 @ 0x1676bc0] exponent out-of-range
    [ac3 @ 0x1676bc0] error decoding the audio block
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    [ac3 @ 0x1676bc0] bandwidth code = 63 > 60
    [ac3 @ 0x1676bc0] error decoding the audio block
    RTP: missed 13 packets
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 3 6
    [mpeg2video @ 0x16d72c0] 00 motion_type at 1 16
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 0 17
    [mpeg2video @ 0x16d72c0] 00 motion_type at 5 21
    [mpeg2video @ 0x16d72c0] 00 motion_type at 3 27
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 7 32
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 8 32
    [mpeg2video @ 0x16d72c0] slice mismatch
       Last message repeated 2 times
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 810 DC, 810 AC, 810 MV errors in P frame
    RTP: missed 44 packets
    [rtsp @ 0x1627c20] PES packet size mismatch
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    [ac3 @ 0x1676bc0] exponent out-of-range0 size=     338kB time=00:00:11.43 bitrate= 242.2kbits/s
    [ac3 @ 0x1676bc0] error decoding the audio block
    RTP: missed 35 packets
       Last message repeated 1 times
    RTP: missed 31 packets
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    [ac3 @ 0x1676bc0] exponent out-of-range
    [ac3 @ 0x1676bc0] error decoding the audio block
    [ac3 @ 0x1676bc0] frame sync error
    Error while decoding stream #0:0: Invalid data found when processing input
    RTP: missed 48 packets
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 5 23
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] 00 motion_type at 17 24
    [mpeg2video @ 0x16d72c0] slice mismatch
       Last message repeated 1 times
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 5 27
    [mpeg2video @ 0x16d72c0] skip with previntra
    [mpeg2video @ 0x16d72c0] 00 motion_type at 15 29
    [mpeg2video @ 0x16d72c0] 00 motion_type at 8 31
    [mpeg2video @ 0x16d72c0] 00 motion_type at 13 32
    [mpeg2video @ 0x16d72c0] 00 motion_type at 22 33
    [mpeg2video @ 0x16d72c0] 00 motion_type at 20 34
    [mpeg2video @ 0x16d72c0] 00 motion_type at 17 35
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 543 DC, 543 AC, 543 MV errors in B frame
    [mpeg2video @ 0x16d72c0] 00 motion_type at 16 1
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 11 13
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 4 7
    [mpeg2video @ 0x16d72c0] 00 motion_type at 2 8
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 0 19
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 0 20
    [mpeg2video @ 0x16d72c0] 00 motion_type at 9 21
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 2 22
    [mpeg2video @ 0x16d72c0] 00 motion_type at 10 23
    [mpeg2video @ 0x16d72c0] slice mismatch
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 1 25
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 38 26
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 3 27
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 22 28
    [mpeg2video @ 0x16d72c0] 00 motion_type at 16 29
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 5 30
    [mpeg2video @ 0x16d72c0] 00 motion_type at 14 31
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 2 32
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 19 9
    [mpeg2video @ 0x16d72c0] invalid mb type in P Frame at 11 10
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 13 11
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 8 12
    [mpeg2video @ 0x16d72c0] 00 motion_type at 33 13
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 8 14
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 6 15
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 15 19
    [mpeg2video @ 0x16d72c0] 00 motion_type at 9 18
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 15 21
    [mpeg2video @ 0x16d72c0] 00 motion_type at 13 21
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 16 22
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 5 23
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 4 24
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] 00 motion_type at 7 26
    [mpeg2video @ 0x16d72c0] slice mismatch
    [mpeg2video @ 0x16d72c0] 00 motion_type at 9 13
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 44 14
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 2 15
    [mpeg2video @ 0x16d72c0] mb incr damaged
       Last message repeated 1 times
    [mpeg2video @ 0x16d72c0] 00 motion_type at 34 18
    [mpeg2video @ 0x16d72c0] 00 motion_type at 15 19
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] 00 motion_type at 8 21
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 14 22
    [mpeg2video @ 0x16d72c0] invalid cbp -1 at 9 23
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 4 24
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] slice mismatch
       Last message repeated 1 times
    [mpeg2video @ 0x16d72c0] mb incr damaged
    [mpeg2video @ 0x16d72c0] ac-tex damaged at 25 29
    [mpeg2video @ 0x16d72c0] invalid cbp 0 at 14 30
    [mpeg2video @ 0x16d72c0] mb incr damaged
       Last message repeated 1 times
    [mpeg2video @ 0x16d72c0] 00 motion_type at 35 33
    [mpeg2video @ 0x16d72c0] slice mismatch
    [mpeg2video @ 0x16d72c0] Warning MVs not available
    [mpeg2video @ 0x16d72c0] concealing 1350 DC, 1350 AC, 1350 MV errors in P frame
    [flv @ 0x16d7c40] Failed to update header with correct duration.:00:12.12 bitrate= 241.4kbits/s
    [flv @ 0x16d7c40] Failed to update header with correct filesize.
    [flv @ 0x16df5a0] Failed to update header with correct duration.
    [flv @ 0x16df5a0] Failed to update header with correct filesize.
    [flv @ 0x16cbe00] Failed to update header with correct duration.
    [flv @ 0x16cbe00] Failed to update header with correct filesize.
    frame=  136 fps= 12 q=-1.0 Lq=-1.0 q=-1.0 size=     633kB time=00:00:13.24 bitrate= 391.8kbits/s
    video:7049kB audio:272kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    [libx264 @ 0x182b140] frame I:4     Avg QP:19.84  size: 33269
    [libx264 @ 0x182b140] frame P:132   Avg QP:21.93  size:  3136
    [libx264 @ 0x182b140] mb I  I16..4:  6.9%  0.0% 93.1%
    [libx264 @ 0x182b140] mb P  I16..4:  0.1%  0.0%  0.7%  P16..4: 32.0% 11.6%  4.4%  0.0%  0.0%    skip:51.1%
    [libx264 @ 0x182b140] coded y,uvDC,uvAC intra: 91.1% 88.6% 67.5% inter: 14.8% 20.2% 1.5%
    [libx264 @ 0x182b140] i16 v,h,dc,p: 35% 15%  3% 47%
    [libx264 @ 0x182b140] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 19%  9%  6%  7%  8%  7%  7%  7%
    [libx264 @ 0x182b140] i8c dc,h,v,p: 45% 20% 28%  7%
    [libx264 @ 0x182b140] ref P L0: 80.5% 11.2%  8.4%
    [libx264 @ 0x182b140] kb/s:369.61
    [libx264 @ 0x16e03c0] frame I:4     Avg QP:19.81  size: 77367
    [libx264 @ 0x16e03c0] frame P:132   Avg QP:21.64  size:  9825
    [libx264 @ 0x16e03c0] mb I  I16..4: 16.2%  0.0% 83.8%
    [libx264 @ 0x16e03c0] mb P  I16..4:  0.6%  0.0%  1.2%  P16..4: 34.1%  9.5%  2.9%  0.0%  0.0%    skip:51.8%
    [libx264 @ 0x16e03c0] coded y,uvDC,uvAC intra: 76.8% 77.3% 41.8% inter: 11.9% 20.4% 0.7%
    [libx264 @ 0x16e03c0] i16 v,h,dc,p: 38% 18%  7% 37%
    [libx264 @ 0x16e03c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 22% 10%  5%  7%  7%  7%  6%  6%
    [libx264 @ 0x16e03c0] i8c dc,h,v,p: 47% 21% 26%  6%
    [libx264 @ 0x16e03c0] ref P L0: 80.8% 12.1%  7.1%
    [libx264 @ 0x16e03c0] kb/s:1085.42
    [libx264 @ 0x16cc880] frame I:4     Avg QP:15.79  size:181630
    [libx264 @ 0x16cc880] frame P:132   Avg QP:18.21  size: 32848
    [libx264 @ 0x16cc880] mb I  I16..4: 13.7%  0.0% 86.3%
    [libx264 @ 0x16cc880] mb P  I16..4:  1.3%  0.0%  2.7%  P16..4: 36.0% 14.2%  4.4%  0.0%  0.0%    skip:41.4%
    [libx264 @ 0x16cc880] coded y,uvDC,uvAC intra: 72.4% 70.6% 41.8% inter: 17.3% 24.9% 1.5%
    [libx264 @ 0x16cc880] i16 v,h,dc,p: 33% 21%  6% 39%
    [libx264 @ 0x16cc880] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 23%  9%  5%  8%  7%  7%  6%  5%
    [libx264 @ 0x16cc880] i8c dc,h,v,p: 44% 21% 27%  8%
    [libx264 @ 0x16cc880] ref P L0: 80.3% 12.7%  7.0%
    [libx264 @ 0x16cc880] kb/s:3420.59