2012-01-13 100 views
10

我試圖使用a264flv視頻轉換爲mp4,但結果視頻的音頻/視頻不同步。音頻看起來不錯,但視頻看起來很慢,因此與音頻不同步。ffmpeg正在生成不同步的音頻/視頻文件

這裏是命令我運行:

/opt/local/bin/ffmpeg -i complaint.flv -f mp4 -vcodec libx264 -acodec aac -copyts -strict experimental -fpre /opt/local/share/ffmpeg/libx264-lossless_slow.ffpreset -ab 44k -threads 0 -crf 23 complaint.mp4 

和輸出:

Desktop /opt/local/bin/ffmpeg -i complaint.flv -f mp4 -vcodec libx264 -acodec aac -copyts -strict experimental -fpre /opt/local/share/ffmpeg/libx264-lossless_slow.ffpreset -ab 44k -threads 0 -crf 23 complaint.mp4 
ffmpeg version 0.7.8, Copyright (c) 2000-2011 the FFmpeg developers 
    built on Jan 12 2012 21:12:26 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3) 
    configuration: --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64 --enable-yasm 
    libavutil 50. 43. 0/50. 43. 0 
    libavcodec 52.123. 0/52.123. 0 
    libavformat 52.111. 0/52.111. 0 
    libavdevice 52. 5. 0/52. 5. 0 
    libavfilter 1. 80. 0/1. 80. 0 
    libswscale 0. 14. 1/0. 14. 1 
    libpostproc 51. 2. 0/51. 2. 0 
[flv @ 0x7fe57a04ac00] Estimating duration from bitrate, this may be inaccurate 
Input #0, flv, from 'complaint.flv': 
    Metadata: 
    duration  : 7 
    creationdate : Thu Jan 12 23:47:24 
    description  : Recorded using VideoRecording example. 
    Duration: 00:00:06.61, start: 0.000000, bitrate: N/A 
    Stream #0.0: Video: flv, yuv420p, 288x288, 1k tbr, 1k tbn, 1k tbc 
    Stream #0.1: Audio: nellymoser, 11025 Hz, mono, s16 
File 'complaint.mp4' already exists. Overwrite ? [y/N] y 
[buffer @ 0x7fe579c32cc0] w:288 h:288 pixfmt:yuv420p tb:1/1000000 sar:0/1 sws_param: 
[libx264 @ 0x7fe57a044600] using cpu capabilities: none! 
[libx264 @ 0x7fe57a044600] profile High, level 4.2 
[libx264 @ 0x7fe57a044600] 264 - core 118 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x33 me=umh subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.41 aq=1:1.00 
Output #0, mp4, to 'complaint.mp4': 
    Metadata: 
    duration  : 7 
    creationdate : Thu Jan 12 23:47:24 
    description  : Recorded using VideoRecording example. 
    encoder   : Lavf52.111.0 
    Stream #0.0: Video: libx264, yuv420p, 288x288, q=0-69, 200 kb/s, 1k tbn, 1k tbc 
    Stream #0.1: Audio: aac, 11025 Hz, mono, s16, 44 kb/s 
Stream mapping: 
    Stream #0.0 -> #0.0 
    Stream #0.1 -> #0.1 
Press [q] to stop, [?] for help 
frame= 6557 fps=106 q=-1.0 Lsize=  685kB time=00:00:03.62 bitrate=1549.1kbits/s dup=6367 drop=0  
video:615kB audio:17kB global headers:0kB muxing overhead 8.361360% 
frame I:27 Avg QP:19.98 size: 8242 
[libx264 @ 0x7fe57a044600] frame P:6530 Avg QP:30.71 size: 62 
[libx264 @ 0x7fe57a044600] mb I I16..4: 11.1% 79.3% 9.6% 
[libx264 @ 0x7fe57a044600] mb P I16..4: 0.1% 0.2% 0.0% P16..4: 1.2% 0.2% 0.3% 0.0% 0.0% skip:98.0% 
[libx264 @ 0x7fe57a044600] 8x8 transform intra:77.8% inter:64.9% 
[libx264 @ 0x7fe57a044600] coded y,uvDC,uvAC intra: 75.3% 81.3% 33.3% inter: 0.5% 0.7% 0.1% 
[libx264 @ 0x7fe57a044600] i16 v,h,dc,p: 78% 9% 10% 3% 
[libx264 @ 0x7fe57a044600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 11% 32% 3% 4% 5% 2% 5% 4% 
[libx264 @ 0x7fe57a044600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 56% 7% 9% 3% 4% 7% 3% 7% 3% 
[libx264 @ 0x7fe57a044600] i8c dc,h,v,p: 45% 15% 34% 6% 
[libx264 @ 0x7fe57a044600] Weighted P-Frames: Y:0.0% UV:0.0% 
[libx264 @ 0x7fe57a044600] ref P L0: 80.5% 9.5% 10.0% 
[libx264 @ 0x7fe57a044600] kb/s:767.20 

有我丟失的東西,以確保視頻和音頻排隊完美?

+0

如果你嘗試 '的ffmpeg -i complaint.flv complaint.mp4',確實是它仍然不同步?在VLC中播放時,原始文件是否不同步? – sashoalm 2012-01-13 08:38:25

+0

這對我不起作用,主要是因爲flv創建時使用的編解碼器(與h264不同) – marcelorocks 2012-01-13 19:29:41

+0

從您的答案我不明白'ffmpeg -i complaint.flv complaint.mp4'是否生成了輸出結果不同步或不同步。這是您調試問題的方式,您嘗試將其隔離。原稿是否不同步?如果VLC以這種方式播放,那麼你就無能爲力。或者它是ffmpeg的一個普遍問題,還是特別與h264編解碼器? – sashoalm 2012-01-14 13:42:05

回答

14

對於那些可能正在嘗試這樣做的人,我最好馬上在h264中錄製閃存,而不是使用yuv420p作爲音頻編解碼器。這就像一個魅力。添加國旗-async 1也有幫助。

更新:請了解一下FFmpeg的文檔(http://ffmpeg.org/ffmpeg.html)此位:

-async:音頻同步方法。 「拉伸/擠壓」音頻流以匹配時間戳,參數是音頻改變的每秒最大采樣數。 -async 1是一種特殊情況,其中只有音頻流的開始被校正而沒有任何稍後的校正。 此選項已被棄用。改用aresample音頻過濾器。

您可以閱讀有關aresample過濾器在這裏:http://ffmpeg.org/trac/ffmpeg/wiki/FilteringGuide

+3

「在h264中,而不是使用yuv420p作爲音頻編解碼器。」 ???不明白。 yuv420p是圖片格式,而不是像h264這樣的視頻編解碼器,既不是音頻cedec。那麼你做了什麼來獲得同步? – user1914692 2013-05-20 21:37:31

+0

這是否等同? 'aresample =異步= 1' – chovy 2017-06-05 08:51:45