2012-10-11 51 views
2

我想連接隨機格式的不同視頻文件。首先我將它們轉換爲flv,將每個視頻的幀率調整到所涉及視頻的最低幀率。下一步是對它們進行解碼並刪除標題(但不是序列中第一個視頻的標題,然後我將它們與cat連接起來,最後我編碼resultsequence。ffmpeg video-concatenation - audio-/videotrack同步

但是,視頻和音頻軌道正在越來越多了,從序列部分序列部分同步。

會很高興的任何想法。

+1

你見過[FFmpeg FAQ:我如何加入視頻文件?](http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f)和[FFmpeg Wiki:How to連接(加入,合併)媒體文件](http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20concatenate%20%28join%2C%20merge%29%20media%20files)? – LordNeckbeard

+0

是否所有的flv音頻流具有相同的採樣率? – rajneesh

回答

0

你的問題,然後保持同步經歷Concat的過程,同時,經驗法則,越少的步驟首先,使用mpg而不是flv作爲中間格式;第二,爲每個命令添加-copyts(複製時間戳以保留同步);另外,不需要到最低幀格式即您可以通過此過程保留最高視頻的質量。試試這個:

$ ffmpeg -i a.mp4 -qscale:v 1 -copyts a.mpg 
$ ffmpeg -i b.flv -qscale:v 1 -copyts b.mpg 

現在你應該有一個兼容的視頻質量(變量:-qscale:v 1)兩(大)中間文件。你準備好將它們粘合在一起。

$ ffmpeg -i concat:"a.mpg|b.mpg" -c copy all.mpg 

如果你在Windows上,你會沒事的。在UNIX中,您需要在管道之前使用反斜槓。 (在我的版本中,我遇到了大量的buffer underflow/packet too large, ignoring buffer limits to mux it錯誤,它們似乎是無害的。)現在,您可以使用更逼真的質量轉換爲您想要的更有用的格式。

$ ffmpeg -i all.mpg -qscale:v 2 -copyts all.mp4 

我已經成功保持了連接的視頻同步,但質量看起來不像應該的那麼好。也許調整中間文件參數。