web-dev-qa-db-ja.com

ffmpegを使用して2つのaviファイルをマージする方法

2つのaviビデオをマージすることができません。グーグルは以下の例でいっぱいです:

cat file1.avi file2.avi file3.avi > video_draft.avi
after appending the data together using cat above, you need to re-index the draft movie like this:

mencoder video_draft.avi -o video_final.avi -forceidx -ovc copy -oac copy
Now you're video_final.avi file will be right to go.

しかし、それは私にはうまくいきません、最初のビデオが変換され、それだけです。

24
teslasimus

Ffmpeg 1.1で追加された concat demux and concat protocol を調べる必要があります。コーデックが同じであると仮定して、ファイルを作成します(例mylist.txt):

file '/path/here/file1.avi'
file '/path/here/file2.avi'
file '/path/here/file3.avi'

次に、そのファイルをffmpegに渡します

ffmpeg -f concat -i mylist.txt -c copy video_draft.avi

このコマンドを使用して、リストを作成できます。

ls *.avi | while read each; do echo "file '$each'" >> mylist.txt; done

リンク先のページには、さまざまなコーデック/フォーマットなどの問題を処理するためのより高度な例があります。

61
cwgem

次の1つのコマンドラインを使用できます。

ffmpeg -i "concat:input1.avi|input2.avi|input3.avi" -c copy output.avi
3
Omer Lerinman

最近のバージョンのffmpegには-safe 0を追加する必要があり、ファイルリストの前に追加する必要があります。

ffmpeg -f concat -safe 0 -I mylist.txt ...
0
lbutlr