[FFmpeg-user] Audio and video desynchronized in clips.

belcampo belcampo at zonnet.nl
Sat Mar 26 13:51:12 CET 2011


On 03/25/11 18:00, R. Clayton wrote:
> I've written a shell script that cuts a media file into a sequence of clips
> using ffmpeg commands that look like this:
>
>    ffmpeg -i failure.mp4 -vcodec copy -acodec copy -ss 00:40:00 -t 00:10:00 \
>      -y clip04.mp4
>
> This command works fine for .flv files, but the clips produced for .mp4 files
> become progressively more desynchronized.  The first clip is fine, but in the
> second clip the audio lags the video by a second or so, and the lag grows
> larger for successive clips (the source is synchronized throughout).
flv and mp4 are containers, the video and audio in that container are 
the same ??
I don't know about flv, but default mp4 stores metadata at the end of 
the file, unless you use the 'qtfast' I think it is named, option to put 
the info at the beginning of the file. Maybe this option helps you solve 
your problem.
>
> All possible combinations of the options -async 1 and -copyts have no effect.
>
> What are the incantations I can use to produce synchronized .mp4 clips?
>
> For the thorough, here's failure.mp4 information:
>
>    $ ffprobe failure.mp4
>    FFprobe version git-6a7e074, Copyright (c) 2007-2011 the FFmpeg developers
>      built on Mar  8 2011 10:38:12 with gcc 4.5.2
>      configuration: --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc'
>      --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis
>      --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc
>      --enable-x11grab --enable-libgsm --enable-libtheora
>      --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264
>      --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter
>      --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger
>      --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg
>      --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec
>      --disable-armv5te --disable-armv6 --disable-vis
>      libavutil    50. 39. 0 / 50. 39. 0
>      libavcodec   52.113. 2 / 52.113. 2
>      libavformat  52.102. 0 / 52.102. 0
>      libavdevice  52.  2. 3 / 52.  2. 3
>      libavfilter   1. 76. 0 /  1. 76. 0
>      libswscale    0. 12. 0 /  0. 12. 0
>      libpostproc  51.  2. 0 / 51.  2. 0
>    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'failure.mp4':
>      Metadata:
>        major_brand     : isom
>        minor_version   : 1
>        compatible_brands: isomavc1
>        creation_time   : 2010-03-06 01:44:18
>      Duration: 00:53:00.36, start: 0.000000, bitrate: 581 kb/s
>        Stream #0.0(und): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 472 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
>        Metadata:
>          creation_time   : 2010-03-06 01:44:18
>        Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 105 kb/s
>        Metadata:
>          creation_time   : 2010-03-06 01:45:36
>
>    $
>
> and here's information on the last clip:
>
>    $ ffprobe clip05.mp4
>    FFprobe version git-6a7e074, Copyright (c) 2007-2011 the FFmpeg developers
>      built on Mar  8 2011 10:38:12 with gcc 4.5.2
>      configuration: --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc'
>      --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis
>      --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc
>      --enable-x11grab --enable-libgsm --enable-libtheora
>      --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264
>      --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter
>      --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger
>      --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg
>      --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec
>      --disable-armv5te --disable-armv6 --disable-vis
>      libavutil    50. 39. 0 / 50. 39. 0
>      libavcodec   52.113. 2 / 52.113. 2
>      libavformat  52.102. 0 / 52.102. 0
>      libavdevice  52.  2. 3 / 52.  2. 3
>      libavfilter   1. 76. 0 /  1. 76. 0
>      libswscale    0. 12. 0 /  0. 12. 0
>      libpostproc  51.  2. 0 / 51.  2. 0
>    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip05.mp4':
>      Metadata:
>        major_brand     : isom
>        minor_version   : 512
>        compatible_brands: isomiso2avc1mp41
>        creation_time   : 1970-01-01 00:00:00
>        encoder         : Lavf52.102.0
>      Duration: 00:03:00.34, start: 0.000000, bitrate: 413 kb/s
>        Stream #0.0(und): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 335 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
>        Metadata:
>          creation_time   : 1970-01-01 00:00:00
>        Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 73 kb/s
>        Metadata:
>          creation_time   : 1970-01-01 00:00:00
>
>    $
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user



More information about the ffmpeg-user mailing list