[FFmpeg-user] Encoding FLV: video plays back slow relative to audio, etc.

Christian Ebert blacktrash at gmx.net
Wed Jul 6 11:23:02 CEST 2011

* Lou on Monday, July 04, 2011 at 14:02:16 -0800
> On Sun, 3 Jul 2011 13:29:10 -0400
> Dave Kleinschmidt <dave.f.kleinschmidt at gmail.com> wrote:
>> Hi all, I'm having a bit of trouble with encoding .avi files as .flv
>> for flowplayer. I know this is a bit of a black art, and I've done
>> quite a bit of looking around, but haven't seen much of anything.
>> The symptoms: the audio plays back fine, but the video plays back at
>> a slightly slower rate. In addition, the onFinish() events fires
>> really late, a second or two after the video has finished.
>> I suspect that this is a problem with how I encoded my .flv file,
>> since the Flowplayer sample .flv plays fine, with no lag, and the
>> onFinish() event fires essentially immediately after the last frame.
>> Any suggestions would be very much appreciated. Unfortunately, I
>> don't have a test site to link to, but here is a link to the
>> original .avi file: http://db.tt/fpLLGSP
>> and here is the .flv: http://db.tt/CnjPIrI

I tried your sample and for me it's too short to detect any
anomalies. The shortness might also be responsible for the
perceived delay of the onFinish event.

>> Here is the ffmpeg call and its output for the actual conversion:
>> dkleinschmidt$ ffmpeg -y -i videos/VbA1.avi -ab 128000 -vcodec flv -r
>> 25 videos/VbA1.flv

I ran the same command with the same result on the avi. The only
thing which looks slightly suspicious is the audio being 1 frame
(0.04 secs) longer than the video. But I get this for all my flv
files, the difference does not increase progressively with the
size of the video.

Of course I might just be too blind and deaf to notice the
difference ;-)
> Is there a reason why you're changing the frame rate? Secondly, the
> encoder called "flv" in FFmpeg is very poor compared to x264, and since
> H.264 can work in the flv container just fine, and you already have it
> enabled apparently, I don't see any reason not to use x264 instead:

Dave might want to cater for old Flash versions < 9.0.115. Also
x264 takes more decoding cpu than flv.

> ffmpeg -i input -vcodec libx264 -preset medium -crf 26 -threads 0 \
> -acodec libmp3lame -aq 5 output.flv
> You may then have to run this output through flvtool++, flvtool2,
> flvmeta, or any other similar tool. I'm not sure if this step is
> necessary for flowplayer these days, but it's something to keep in mind
> if it has trouble with the output from FFmpeg (such as incorrectly
> displaying the duration for example).

Injecting metadata should only be needed for pseudostreaming flv.

I also compared Dave's result after injection, and it doesn't
make any difference.

theatre - books - texts - movies
Black Trash Productions at home: http://www.blacktrash.org
Black Trash Productions on Facebook:

More information about the ffmpeg-user mailing list