2012-04-12 368 views
8

我真的很感激,如果有人可以提供一些關於使用foffset與ffmpeg的指針。我已經閱讀了許多關於這個主題的文章,其中一些非常清楚地解釋瞭如何用-itsoffset重新同步音頻和視頻,但是我一直無法使它工作。 我的AVI文件進行編碼的ffmpeg,在兩遍,使用下面的命令用於第二遍:ffmpeg流偏移命令(-itsoffset)不工作

ffmpeg -i whole-vts_01.avs -pass 2 -y -vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k output.avi 

無論出於何種原因,我結束了在視頻中的1秒延遲(或音頻是1秒早)。它不經常發生,但我不時看到它。 在其他的嘗試,我曾嘗試以下:

(1) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.avi -vcodec copy -acodec copy -map 0:0 -map 1:1 output-resynched.avi 
(2) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched2.avi 
(3) ffmpeg -itsoffset -00:00:01.00 -i output.avi output-resynched8.avi 
(4) ffmpeg -i output.avi -itsoffset -1.0 -i output.avi -vcodec copy -acodec copy -map 0:1 -map 1:0 output-resynched13.avi 

下面是結果:

  1. 音頻亂碼只有5m 35秒長與1H41米。
  2. (Output.ac3是output.avi的音頻組件)視頻和音頻 等同於原來,偏移沒有工作
  3. 音頻沒有得到轉移,但是默認的替換原始編碼參數(如預期)。
  4. 音頻出現亂碼,只有9米56秒長,1小時41米。

我看到許多人解釋,顯然使用上述過程,但它似乎並沒有爲我工作。我錯過了明顯的東西嗎?我非常希望能夠使用-itsoffset,因爲它比我的解決方案更清潔。

FWIW,這裏是獲得所需結果的不同,以及更長的路:

首先創建一個移動視頻文件只使用-ss:

ffmpeg -i output.avi -ss 1.0 -vcodec copy -an oupput_videoshifted.avi 

然後提取音頻:

ffmpeg -i output.avi -vn -acodec copy outputaudioonly.ac3 

最後重複雙組分:

ffmpeg -i output_videoshifted.avi -i output_audioonly.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched14.avi 

這個過程很有效,但我真的更喜歡使用一個pass -itsoffset解決方案。

+0

有一個[open bug](http://roundup.libav.org/issue359)和'-itsoffset'標誌,可能與你看到的問題有關。另一方面,亂碼和截斷的音頻聽起來像是更嚴重的事情是錯誤的。如果這仍然是一個問題,你使用的是什麼版本的FFmpeg? – blahdiblah 2012-08-03 23:23:23

回答

4

這裏是我做的,它爲我

工作的第一個輸入設置-i和第二輸入是來自同一個視頻文件。在第1輸入影像

延遲1秒,第二輸入音頻只是做一個副本

ffmpeg -y -itsoffset 00:00:01.000 -i "d:\Video1.mp4" -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 
在第二輸入音頻

延遲1秒,第一次輸入的視頻只是做一個副本

ffmpeg -y -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 
0

該問題位於-vcodec copy -acodec copy上,因爲該移位僅適用於關鍵幀。我曾經也有過一樣的問題。

只是不要複製(音頻/)視頻,嘗試用-itsoffset的事情,但使用

-vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k 

重新編碼。它應該工作。