Recherche avancée

Médias (1)

Mot : - Tags -/publier

Autres articles (46)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • 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

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (7883)

  • 2011 In Open Source Multimedia

    5 janvier 2012, par Multimedia Mike — Open Source Multimedia

    Sometimes I think that the pace of multimedia technology is slowing down. Obviously, I’m not paying close enough attention. I thought I would do a little 2011 year-end review of what happened in the world of open source multimedia, mainly for my own benefit. Let me know in the comments what I missed.

    The Split
    The biggest deal in open source multimedia was the matter of the project split. Where once stood one project (FFmpeg) there now stands two (also Libav). Where do things stand with the projects now ? Still very separate but similar. Both projects obsessively monitor each other’s git commits and prodigiously poach each other’s work, both projects being LGPL and all. Most features that land in one code base end up in the other. Thus, I refer to FFmpeg and Libav collectively as “the projects”.

    Some philosophical reasons for the split included project stagnation and development process friction. Curiously, these problems are fond memories now and the spirit of competition has pushed development forward at a blinding pace.

    People inside the project have strong opinions about the split ; that’s understandable. People outside the project have strong opinions about the split ; that’s somewhat less understandable, but whatever. After 5 years of working for Adobe on the Flash Player (a.k.a. the most hated software in all existence if internet nerds are to be believed on the matter), I’m so over internet nerd drama.

    For my part, I just try to maintain some appearance of neutrality since I manage some shared resources for the open source multimedia community (like the wiki and samples repo) and am trying to keep them from fracturing as well.

    Apple and Open Source
    It was big news that Apple magnanimously open sourced their lossless audio codec. That sets a great example and precedent.

    New Features
    I mined the 'git log' of the projects in order to pick out some features that were added during 2011.

    First off, Apple’s ProRes video codec was reverse engineered and incorporated into the multimedia libraries. And for some weird reason, this is an item that made the rounds in the geek press. I’m not entirely sure why, but it may have something to do with inter-project conflict. Anyway, here is the decoder in action, playing a video of some wild swine, one of the few samples we have :



    Other new video codecs included a reverse engineered Indeo 4 decoder. Gotta catch ‘em all ! That completes our collection of Indeo codecs. But that wasn’t enough– this year, we got a completely revised Indeo 3 decoder (the previous one, while functional, exhibited a lot of code artifacts betraying a direct ASM ->C translation). Oh, and many thanks to Kostya for this gem :



    That’s the new Origin Xan decoder (best known for Wing Commander IV cinematics) in action, something I first started reverse engineering back in 2002. Thanks to Kostya for picking up my slack yet again.

    Continuing with the codec section, there is a decoder for Adobe Flash Screen Video 2 — big congrats on this ! One of my jobs at Adobe was documenting this format to the outside world and I was afraid I could never quite make it clear enough to build a complete re-implementation. But the team came through.

    Let’s see, there are decoders for VBLE video, Ut Video, Windows Media Image (WMVP/WMP2), Bink audio version ‘b’, H.264 4:2:2 intra frames, and MxPEG video. There is a DPX image encoder, a Cirrus Logic AccuPak video encoder, and a v410 codec.

    How about some more game stuff ? The projects saw — at long last — an SMJPEG demuxer. This will finally allow usage and testing of the SMJPEG IMA ADPCM audio decoder I added about a decade ago. Funny story behind that– I was porting all of my decoders from xine which included the SMJPEG ADPCM. I just never quite got around to writing a corresponding demuxer. Thanks to Paul Mahol for taking care of that.

    Here’s a DFA playback system for a 1995 DOS CD-ROM title called Chronomaster. No format is too obscure, nor its encoded contents too cheesy :



    There’s now a demuxer for a format called XMV that was (is ?) prevalent on Xbox titles. Now the projects can handle FMV files from many Xbox games, such as Thrillville.



    The projects also gained the ability to play BMV files. I think this surfing wizard comes from Discworld II. It’s non-computer-generated animation at a strange resolution.



    More demuxers : xWMA, PlayStation Portable PMP format, and CRI ADX format ; muxer for OpenMG audio and LATM muxer/demuxer.

    One more thing : an AVX-optimized fast Fourier transform (FFT). If you have a machine that supports AVX, there’s no way you’ll even notice the speed increase of a few measly FFT calls for audio coding/decoding, but that’s hardly the point. The projects always use everything on offer for any CPU.

    Please make me aware of features that I missed in the list !

    Continuous Testing
    As a result of the split, each project has its own FATE server, one for FFmpeg and one for Libav. As of the new year, FFmpeg has just over 1000 tests while Libav had 965. This is one area where I’m obviously ecstatic to see competition. Some ad-hoc measurements on my part indicate that the total code coverage via the FATEs has not appreciably increased. But that’s a total percentage. Both the test count and the code count have been steadily rising.

    Google Summer of Code and Google Code-In
    Once again, the projects were allowed to participate in the Google Summer of Code as well as Google Code-In. I confess that I didn’t keep up with these too carefully (and Code-In is still in progress as of this writing). I do know that the project split occurred after FFmpeg had already been accepted for GSoC season 2011 and the admins were gracious enough to allow FFmpeg and Libav to allow both projects to participate in the same slot as long as they could both be mature about it.

    Happy New Year
    Let’s see what we can accomplish in 2012.

  • FFMPEG video joiner

    31 mars 2012, par Udhay

    I am working on merging videos, but is not merging my videos. Here is the code

    exec(cat file1.flv file2.flv > trailer/output.flv);<br />
    exec("ffmpeg -i trailer/output.flv -sameq trailer/output.flv);

    But if the size of file1 is 1MB and file2 is 2MB and output is coming as 3MB. But it is playing only the file1.

  • FFmpeg not honoring bitrate for different containers ?

    19 mars 2013, par Haleeq Usman

    I am attempting to encode a mp4 video file into a flv video. Here is what I am doing :

    #include
    #include
    #include
    #include
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>

    #define STREAM_FRAME_RATE 30 /* 30 images/s */
    #define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */
    /**************************************************************/
    /* Add an output stream. */
    static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec,
           enum AVCodecID codec_id) {
       AVCodecContext *c;
       AVStream *st;
       /* find the encoder */
       *codec = avcodec_find_encoder(codec_id);
       if (!(*codec)) {
           fprintf(stderr, "Could not find encoder for &#39;%s&#39;\n",
                   avcodec_get_name(codec_id));
           exit(1);
       }
       st = avformat_new_stream(oc, *codec);
       if (!st) {
           fprintf(stderr, "Could not allocate stream\n");
           exit(1);
       }
       st->id = oc->nb_streams - 1;
       c = st->codec;
       switch ((*codec)->type) {
       case AVMEDIA_TYPE_VIDEO:
           //avcodec_get_context_defaults3(c, *codec);
           c->codec_id = codec_id;
           c->bit_rate = 150 * 1000; //2314000;;
           //c->rc_max_rate = 150*1000;
           //c->rc_buffer_size = 150*1000;
           /* Resolution must be a multiple of two. */
           c->width = 1280;
           c->height = 720;
           /* timebase: This is the fundamental unit of time (in seconds) in terms
            * of which frame timestamps are represented. For fixed-fps content,
            * timebase should be 1/framerate and timestamp increments should be
            * identical to 1. */
           c->time_base.den = STREAM_FRAME_RATE;
           c->time_base.num = 1;
           c->gop_size = 12; /* emit one intra frame every twelve frames at most */
           c->pix_fmt = STREAM_PIX_FMT;
           if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
               /* just for testing, we also add B frames */
               c->max_b_frames = 2;
           }
           if (c->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
               /* Needed to avoid using macroblocks in which some coeffs overflow.
                * This does not happen with normal video, it just happens here as
                * the motion of the chroma plane does not match the luma plane. */
               c->mb_decision = 2;
           }
           break;
       default:
           break;
       }
       /* Some formats want stream headers to be separate. */
       if (oc->oformat->flags &amp; AVFMT_GLOBALHEADER)
           c->flags |= CODEC_FLAG_GLOBAL_HEADER;
       return st;
    }
    /**************************************************************/
    /* video output */
    static AVFrame *frame;
    static AVPicture src_picture, dst_picture;
    static int frame_count;
    static void open_video(AVFormatContext *oc, AVCodec *codec, AVStream *st) {
       int ret;
       AVCodecContext *c = st->codec;
       /* open the codec */
       ret = avcodec_open2(c, codec, NULL);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not open video codec: %s\n", av_err2str(ret));
           exit(1);
       }
       /* allocate and init a re-usable frame */
       frame = avcodec_alloc_frame();
       if (!frame) {
           fprintf(stderr, "Could not allocate video frame\n");
           exit(1);
       }
       /* Allocate the encoded raw picture. */
       ret = avpicture_alloc(&amp;dst_picture, c->pix_fmt, c->width, c->height);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not allocate picture: %s\n", av_err2str(ret));
           exit(1);
       }
       /* If the output format is not YUV420P, then a temporary YUV420P
        * picture is needed too. It is then converted to the required
        * output format. */
       if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
           ret = avpicture_alloc(&amp;src_picture, AV_PIX_FMT_YUV420P, c->width,
                   c->height);
           if (ret &lt; 0) {
               fprintf(stderr, "Could not allocate temporary picture: %s\n",
                       av_err2str(ret));
               exit(1);
           }
       }
       /* copy data and linesize picture pointers to frame */
       *((AVPicture *) frame) = dst_picture;
    }
    static void close_video(AVFormatContext *oc, AVStream *st) {
       avcodec_close(st->codec);
       av_free(src_picture.data[0]);
       av_free(dst_picture.data[0]);
       av_free(frame);
    }

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

       const char *filename;
       AVOutputFormat *fmt;
       AVFormatContext *oc;
       AVStream *video_st;
       AVCodec *video_codec;
       int ret;

       // Register all formats, codecs and network
       av_register_all();
       avcodec_register_all();
       avformat_network_init();

       // Open video file
       if (avformat_open_input(&amp;pFormatCtx, "input_file.mp4", NULL, NULL) != 0)
           return -1; // Couldn&#39;t open file

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

       // Dump information about file onto standard error
       av_dump_format(pFormatCtx, 0, "input_file.mp4", 0);

       // Find the first video stream
       videoStream = -1;
       for (i = 0; i &lt; pFormatCtx->nb_streams; i++)
           if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
               videoStream = i;
               break;
           }
       if (videoStream == -1)
           return -1; // Didn&#39;t find a video stream

       // 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, NULL) &lt; 0)
           return -1; // Could not open codec

       // Allocate video frame
       pFrame = avcodec_alloc_frame();

       // setup mux
       filename = "output_file.flv";
       fmt = av_guess_format("flv", filename, NULL);
       if (fmt == NULL) {
           printf("Could not guess format.\n");
           return -1;
       }
       // allocate the output media context
       oc = avformat_alloc_context();
       if (oc == NULL) {
           printf("could not allocate context.\n");
           return -1;
       }
       oc->oformat = fmt;

       // Add the video streams using the default format codecs
       // and initialize the codecs.
       video_st = NULL;
       if (fmt->video_codec != AV_CODEC_ID_NONE) {
           video_st = add_stream(oc, &amp;video_codec, fmt->video_codec);
       }
       // Now that all the parameters are set, we can open the
       // video codec and allocate the necessary encode buffers.
       if (video_st)
           open_video(oc, video_codec, video_st);

       /* open the output file, if needed */
       if (!(fmt->flags &amp; AVFMT_NOFILE)) {
           ret = avio_open(&amp;oc->pb, filename, AVIO_FLAG_WRITE);
           if (ret &lt; 0) {
               fprintf(stderr, "Could not open &#39;%s&#39;: %s\n", filename,
                       av_err2str(ret));
               return 1;
           }
       }

       // dump output format
       av_dump_format(oc, 0, filename, 1);

       // Write the stream header, if any.
       ret = avformat_write_header(oc, NULL);
       if (ret &lt; 0) {
           fprintf(stderr, "Error occurred when opening output file: %s\n",
                   av_err2str(ret));
           return 1;
       }

       // Read frames, decode, and re-encode
       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) {

                   AVFrame* newFrame = avcodec_alloc_frame(); // Initialize a new frame
                   int size = avpicture_get_size(video_st->codec->pix_fmt,
                           video_st->codec->width, video_st->codec->height);
                   uint8_t* picture_buf = av_malloc(size);

                   avpicture_fill((AVPicture *) newFrame, picture_buf,
                           video_st->codec->pix_fmt, video_st->codec->width,
                           video_st->codec->height);

                   // Copy only the frame content without any other disturbing
                   av_picture_copy((AVPicture*) newFrame, (AVPicture*) pFrame,
                           video_st->codec->pix_fmt, video_st->codec->width,
                           video_st->codec->height);

                   // encode the image
                   AVPacket pkt;
                   int got_output;
                   av_init_packet(&amp;pkt);
                   pkt.data = NULL; // packet data will be allocated by the encoder
                   pkt.size = 0;

                   /* Setting newFrame->pts this way produces the error &#39;non-strictly-monotonic PTS&#39; */
                   //if(newFrame->pts != AV_NOPTS_VALUE)
                   //newFrame->pts = av_rescale_q(newFrame->pts, video_st->time_base, video_st->codec->time_base);

                   // Setting newFrame->pts this does not produce &#39;non-strictly-monotonic PTS&#39;
                   newFrame->pts = frame_count;

                   ret = avcodec_encode_video2(video_st->codec, &amp;pkt, newFrame, &amp;got_output);
                   if (ret &lt; 0) {
                       fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
                       exit(1);
                   }

                   if (got_output) {
                       if (video_st->codec->coded_frame->key_frame)
                       pkt.flags |= AV_PKT_FLAG_KEY;
                       pkt.stream_index = video_st->index;

                       if (pkt.pts != AV_NOPTS_VALUE)
                           pkt.pts = av_rescale_q(pkt.pts,
                                   video_st->codec->time_base,
                                   video_st->time_base);
                       if (pkt.dts != AV_NOPTS_VALUE)
                           pkt.dts = av_rescale_q(pkt.dts,
                                   video_st->codec->time_base,
                                   video_st->time_base);

                       // Write the compressed frame to the media file.
                       ret = av_interleaved_write_frame(oc, &amp;pkt);
                   } else {
                       ret = 0;
                   }
                   if (ret != 0) {
                       fprintf(stderr, "Error while writing video frame: %s\n",
                               av_err2str(ret));
                       exit(1);
                   }

                   fprintf(stderr, "encoded frame #%d\n", frame_count);
                   frame_count++;
                   av_free(picture_buf);
                   av_free_packet(&amp;pkt);
               }
           }

           // Free the packet that was allocated by av_read_frame
           av_free_packet(&amp;packet);
       }

       /* Write the trailer, if any. The trailer must be written before you
        * close the CodecContexts open when you wrote the header; otherwise
        * av_write_trailer() may try to use memory that was freed on
        * av_codec_close(). */
       av_write_trailer(oc);

       /* Close video encoder (codec). */
       if (video_st)
           close_video(oc, video_st);
       // Free the streams.
       for (i = 0; i &lt; oc->nb_streams; i++) {
           av_freep(&amp;oc->streams[i]->codec);
           av_freep(&amp;oc->streams[i]);
       }
       if (!(fmt->flags &amp; AVFMT_NOFILE))
           /* Close the output file. */
           avio_close(oc->pb);
       /* free the stream */
       av_free(oc);

       // Free the YUV frame holding decoded frame
       av_free(pFrame);

       // Close the decoder (codec)
       avcodec_close(pCodecCtx);

       // Close the input video file
       avformat_close_input(&amp;pFormatCtx);

       return 0;
    }

    If I change the output format to an mp4, mov, or f4v by changing :

    // setup mux (FLV OUTPUT)
    filename = "output_file.flv";
    fmt = av_guess_format("flv", filename, NULL);
    if (fmt == NULL) {
       printf("Could not guess format.\n");
       return -1;
    }

    to

    // setup mux (MP4 OUTPUT)
    filename = "output_file.mp4";
    fmt = av_guess_format("mp4", filename, NULL);
    if (fmt == NULL) {
       printf("Could not guess format.\n");
       return -1;
    }

    Then the bitrate is honored. Here is the output of running with a mp4 output

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#39;input_file.mp4&#39;:
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isomavc1mp42
       creation_time   : 2010-02-09 19:11:10
     Duration: 00:04:31.80, start: 0.000000, bitrate: 2314 kb/s
       Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
       Metadata:
         creation_time   : 2010-02-09 19:11:10
         handler_name    : (C) 2007 Google Inc. v08.13.2007.
       Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2186 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc
       Metadata:
         creation_time   : 2010-02-09 19:11:10
         handler_name    : (C) 2007 Google Inc. v08.13.2007.
    [libx264 @ 02268b80] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
    [libx264 @ 02268b80] profile High, level 3.1
    [libx264 @ 02268b80] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
    lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
    ma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
    b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=12 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=12 rc=abr mbtree=1 bitrate=150 ratetol=1.0 qco
    mp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to &#39;output_file.mp4&#39;:
       Stream #0:0: Video: h264, yuv420p, 1280x720, q=-1--1, 150 kb/s, 90k tbn, 30 tbc
    encoded frame #0
    encoded frame #1
    encoded frame #2
    encoded frame #3
    .
    .
    .
    encoded frame #8142
    encoded frame #8143
    encoded frame #8144
    encoded frame #8145
    [libx264 @ 02174240] frame I:771   Avg QP:47.71  size:  2739
    [libx264 @ 02174240] frame P:5083  Avg QP:50.05  size:   833
    [libx264 @ 02174240] frame B:2264  Avg QP:48.16  size:    91
    [libx264 @ 02174240] consecutive B-frames: 59.6%  6.4%  9.0% 24.9%
    [libx264 @ 02174240] mb I  I16..4: 34.0% 65.8%  0.2%
    [libx264 @ 02174240] mb P  I16..4:  6.8%  3.0%  0.0%  P16..4:  8.5%  0.4%  1.7%  0.0%  0.0%    skip:79.6%
    [libx264 @ 02174240] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  1.8%  0.0%  0.0%  direct: 0.0%  skip:98.2%  L0:23.6% L1:76.4% BI: 0.0%
    [libx264 @ 02174240] final ratefactor: 57.62
    [libx264 @ 02174240] 8x8 transform intra:52.1% inter:98.5%
    [libx264 @ 02174240] coded y,uvDC,uvAC intra: 3.1% 14.0% 0.2% inter: 0.1% 0.4% 0.0%
    [libx264 @ 02174240] i16 v,h,dc,p: 69% 23%  4%  4%
    [libx264 @ 02174240] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23%  6% 68%  1%  1%  1%  1%  0%  0%
    [libx264 @ 02174240] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 18% 18%  4%  4%  5%  3%  3%  3%
    [libx264 @ 02174240] i8c dc,h,v,p: 98%  1%  1%  0%
    [libx264 @ 02174240] Weighted P-Frames: Y:2.1% UV:1.2%
    [libx264 @ 02174240] ref P L0: 72.4%  0.8% 19.1%  7.6%  0.1%
    [libx264 @ 02174240] ref B L0: 89.8%  9.1%  1.2%
    [libx264 @ 02174240] ref B L1: 96.2%  3.8%
    [libx264 @ 02174240] kb/s:193.62

    The final file size of output_file.mp4 is about 6.5MB and using ffplay, I notice that bitrate was honored. Of course the quality itself shows.

    Here is the output of running with a flv output :

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#39;input_file.mp4&#39;:
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isomavc1mp42
       creation_time   : 2010-02-09 19:11:10
     Duration: 00:04:31.80, start: 0.000000, bitrate: 2314 kb/s
       Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
       Metadata:
         creation_time   : 2010-02-09 19:11:10
         handler_name    : (C) 2007 Google Inc. v08.13.2007.
       Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2186 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc
       Metadata:
         creation_time   : 2010-02-09 19:11:10
         handler_name    : (C) 2007 Google Inc. v08.13.2007.
    Output #0, flv, to &#39;output_file.flv&#39;:
       Stream #0:0: Video: flv1, yuv420p, 1280x720, q=2-31, 150 kb/s, 90k tbn, 30 tbc
    encoded frame #0
    encoded frame #1
    encoded frame #2
    encoded frame #3
    .
    .
    .
    encoded frame #8142
    encoded frame #8143
    encoded frame #8144
    encoded frame #8145

    I noticed that the bitrate is honored as long as the container is a mp4, mov, f4v, or something similar. If I try flv, wmv, or other different containers, then the bitrate is not honored. Also, the bitrate that is automatically set for wmv is different from that of flv. I am not sure what I am doing wrong. I suspect it has to do with the pts, however, I cannot find a solution :(.