2012-12-16 252 views
3

我有非常奇怪的視頻文件。 它有音頻/視頻同步問題。視頻快,音頻好。 視頻具有奇怪的幀速率:26.07 fps。音頻視頻同步與ffmpeg

如何使用ffmpeg修復視頻流。在視頻開始時,同步是確定的,但在視頻流結束時,剩下大約5分鐘的音頻,並且正在播放黑屏。

這是ffmpeg的輸出-i video.avi

ffmpeg version git-2011-10-15-1d0afec, Copyright (c) 2000-2011 the FFmpeg developers 
    built on Oct 15 2011 14:27:57 with gcc 4.4.5 
    configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libxvid 
    libavutil 51. 21. 0/51. 21. 0 
    libavcodec 53. 20. 1/53. 20. 1 
    libavformat 53. 16. 0/53. 16. 0 
    libavdevice 53. 4. 0/53. 4. 0 
    libavfilter 2. 43. 6/2. 43. 6 
    libswscale 2. 1. 0/2. 1. 0 
    libpostproc 51. 2. 0/51. 2. 0 
[mpeg4 @ 0xa585420] Invalid and inefficient vfw-avi packed B frames detected 
Input #0, matroska,webm, from 'video.avi': 
    Duration: 02:03:46.01, start: 0.000000, bitrate: 103 kb/s 
    Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID/0x44495658), yuv420p, 704x288 [SAR 1:1 DAR 22:9], 26.07 fps, 25 tbr, 1k tbn, 25 tbc (default) 
    Stream #0:1(pol): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default) 

回答

3

首先,你可能需要單獨的音頻:

ffmpeg -i input.avi -vn -ac 2 -ar 48000 -ab 448k -f mp3 audio.mp3 

然後,你需要分割視頻文件的整個長度(以秒爲單位)除以視頻流的實際長度(視頻停止並且您可以聽到音頻的時間)。你應該得到一個高於1的數字(1.12或類似的東西)。你把這個商和:

ffmpeg -i input.avi -vf "setpts=quotient*PTS" -an output.avi 

然後你結合視頻和音頻。

+1

這對我有效。謝謝! – Hendy