[FFmpeg-user] Some inputs make MP4 output sync incompatible with other applications
Francois Visagie
francois.visagie at gmail.com
Fri Aug 23 15:11:23 CEST 2013
Hi All,
I'm batch encoding our DVDs to H.264 AAC MP4s. Two of these output MP4s have
audio that start too early in both MPC-HC and Windows Media Player, although
ffplay syncs them correctly.
This problem seems specific to the MP4 container; when I e.g. mux to an .mpg
container the problem doesn't occur. What's also interesting to note is that
encoding individual VOBs later in the same titlesets (i.e. which don't have
headers) also doesn't produce this problem. Both MPC-HC and WMP play all
original VOBs fine. Therefore FWIW the problem seems to be in the way that
ffmpeg interprets and then recreates header information.
I'm trying to prevent this MP4 desync for other applications in a way that
safely can be left in the batch process also for better-behaved inputs.
Specifying different MP4-type formats like ipod, mov, mp4 and psp makes no
difference. Through trial-and-error, so far either '-copypts' or the
now-deprecated '-async 1' prevents desync in other applications.
For reasons not related to this issue I'd prefer to continue with
'-copypts':
- From limited testing so far, it seems '-copypts' doesn't always
produce correct results when applied across the board also to well-behaved
inputs; is that expected?
- What other - perhaps MP4-specific - settings or other mechanisms
can I try to make MP4 sync information more compatible with other
applications, and that are safe also to use with well-behaved inputs?
Some examples:
Out of sync for other applications:
ffmpeg -i VTS_01_1.cut.VOB -filter:a aformat=channel_layouts=stereo -c:a
libvo_aacenc -c:v libx264 -preset ultrafast -b:v 1000000 zzz.mp4
In sync for other applications:
ffmpeg -i VTS_01_1.cut.VOB -filter:a aformat=channel_layouts=stereo -c:a
libvo_aacenc -c:v libx264 -preset ultrafast -b:v 1000000 zzz.mpg
ffmpeg -i VTS_01_1.cut.VOB -filter:a aformat=channel_layouts=stereo -c:a
libvo_aacenc -c:v libx264 -preset ultrafast -b:v 1000000 -copypts
zzzcopypts.mp4
Sample clip used in these examples (67 MB):
http://www.mediafire.com/download/p5ywp0aqwuuw6na/VTS_01_1.cut.VOB
Console output for ffmpeg -i VTS_01_1.cut.VOB -filter:a
aformat=channel_layouts=stereo -c:a libvo_aacenc -c:v libx264 -preset
ultrafast -b:v 1000000 zzz.mp4:
C:\Users\fvisagie\Videos\My DVDs\MainMovie\Roxette Live in Sydney -
1991\VIDEO_TS\TESTSYNCCUT>ffmpeg -i VTS_01_1.cut.VOB -filter:a
aformat=channel_layouts=stere
o -c:a libvo_aacenc -c:v libx264 -preset ultrafast -b:v 1000000 zzz.mp4
ffmpeg version N-55159-gf118b41 Copyright (c) 2000-2013 the FFmpeg
developers
built on Aug 1 2013 18:01:57 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca
--enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug
--enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr
--enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc
--enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libxavs --
enable-libxvid --enable-zlib
libavutil 52. 40.100 / 52. 40.100
libavcodec 55. 19.100 / 55. 19.100
libavformat 55. 12.102 / 55. 12.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 82.100 / 3. 82.100
libswscale 2. 4.100 / 2. 4.100
libswresample 0. 17.103 / 0. 17.103
libpostproc 52. 3.100 / 52. 3.100
Input #0, mpeg, from 'VTS_01_1.cut.VOB':
Duration: 00:01:12.11, start: 0.060000, bitrate: 7840 kb/s
Stream #0:0[0x1bf]: Data: dvd_nav_packet
Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [SAR 8:9
DAR 4:3], max. 6000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:2[0x8a]: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536
kb/s
Stream #0:3[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
[libx264 @ 003c2b80] using SAR=8/9
[libx264 @ 003c2b80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 003c2b80] profile Constrained Baseline, level 3.0
[libx264 @ 003c2b80] 264 - core 135 r2345 f0c1c53 - H.264/MPEG-4 AVC codec -
Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0
ref=1 deb
lock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0
me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1
chroma_qp_
offset=0 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1
interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0
keyint=250 keyint_m
in=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=1000 ratetol=1.0
qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, mp4, to 'zzz.mp4':
Metadata:
encoder : Lavf55.12.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p,
720x480 [SAR 8:9 DAR 4:3], q=-1--1, 1000 kb/s, 30k tbn, 29.97 tbc
Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 48000
Hz, stereo, s16, 128 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (mpeg2video -> libx264)
Stream #0:2 -> #0:1 (dca -> libvo_aacenc)
Press [q] to stop, [?] for help
[mpeg2video @ 003cbec0] warning: first frame is no keyframe
Last message repeated 1 times
[mpeg2video @ 003cbec0] ac-tex damaged at 12 16=00:01:08.36
bitrate=1187.3kbits/s dup=8 drop=0
[mpeg2video @ 003cbec0] Warning MVs not available
[mpeg2video @ 003cbec0] concealing 630 DC, 630 AC, 630 MV errors in I frame
frame= 2181 fps=397 q=-1.0 Lsize= 10737kB time=00:01:12.77
bitrate=1208.6kbits/s dup=10 drop=0
video:9549kB audio:1125kB subtitle:0 global headers:0kB muxing overhead
0.580242%
[libx264 @ 003c2b80] frame I:9 Avg QP:22.00 size: 12125
[libx264 @ 003c2b80] frame P:2172 Avg QP:25.35 size: 4452
[libx264 @ 003c2b80] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 003c2b80] mb P I16..4: 21.7% 0.0% 0.0% P16..4: 31.0% 0.0%
0.0% 0.0% 0.0% skip:47.3%
[libx264 @ 003c2b80] final ratefactor: 25.51
[libx264 @ 003c2b80] coded y,uvDC,uvAC intra: 11.2% 48.1% 15.5% inter: 11.7%
23.9% 1.7%
[libx264 @ 003c2b80] i16 v,h,dc,p: 45% 30% 15% 10%
[libx264 @ 003c2b80] i8c dc,h,v,p: 46% 26% 19% 8%
[libx264 @ 003c2b80] kb/s:1074.91
[libvo_aacenc @ 03f07240] 1 frames left in the queue on closing
C:\Users\fvisagie\Videos\My DVDs\MainMovie\Roxette Live in Sydney -
1991\VIDEO_TS\TESTSYNCCUT>
Thanks in advance,
Francois
Francois Visagie
T: +27 (83) 326-4358
F: +27 (86) 511-3490
E: francois.visagie at gmail.com
More information about the ffmpeg-user
mailing list