38

フォルダーにいくつかのチャンクがあります。

0001.mp4
0002.mp4
0003.mp4
...
0112.mp4

それらをfull.mp4にマージしたい

私は使用しようとしました:

avconv -f concat -i <(printf "file '%s'\n" /root/chunk/*.mp4) -y \
-c copy /root/test/full.mp4

不明な入力形式: 'concat'

avconv -f concat -i <(printf "%s|" /root/chunk/*.mp4) -y \
-c copy /root/test/full.mp4

不明な入力形式: 'concat'

avconv -i concat:`ls -ltr /root/chunk/*.mp4 | awk 'BEGIN {ORS="|"} { print $9 }'` \
 -c:v copy -c:a copy /root/test/full.mp4

前の版では、1 つの入力ファイルのみが出力にキャッチされました。

フォルダのすべてのチャンクを完全なビデオにマージする方法は?

私はffmpegなどを使いたくありません。Avconv のみ。

4

10 に答える 10

20
avconv -i concat:file1.mp4\|file2.mp4 -c copy output.mp4

コンテナのタイプで動作するかどうかはわかりません(私にとっては動作しましたAVI)。

于 2013-10-11T09:15:15.777 に答える
10

mp4 の場合、私が見つけた唯一の有効な解決策は、gpac パッケージの MP4Box を使用することでした

#!/bin/bash
filesList=""
for file in $(ls *.mp4|sort -n);do
    filesList="$filesList -cat $file"
done
MP4Box $filesList -new merged_files_$(date +%Y%m%d_%H%M%S).mp4

またはコマンドは

MP4Box -cat file1.mp4 -cat file2.mp4 -new mergedFile.mp4

mencoder と avconv では動作しませんでした :-(

于 2014-12-21T21:13:11.570 に答える
6

これは動作します

avconv -i 1.mp4 1.mpeg
avconv -i 2.mp4 2.mpeg
avconv -i 3.mp4 3.mpeg

cat 1.mpeg 2.mpeg 3.mpeg | avconv -f mpeg -i - -vcodec mpeg4 -strict experimental output.mp4

上記は avconv しかない場合に機能しますが、ffmpeg には機能が追加されています ... 引用する:

「上記の avconv ステップは、時間がかかり、出力の品質を低下させる不必要な追加の非可逆エンコーディング ステップを実行します。代わりに concat demuxer (追加情報) または concat フィルターを使用することをお勧めしますが、avconv には FFmpeg の ffmpeg で利用可能な機能がありません」 – @首ひげ卿

    SEE  https://trac.ffmpeg.org/wiki/Concatenate

名前付きパイプをサポートするシステムを使用している場合は、それらを使用して中間ファイルの作成を回避できます。これにより、stderr (ffmpeg が書き込まれたすべてのデータの送信先) が /dev/null に送信され、コマンドラインが乱雑になるのを回避できます。

mkfifo temp1 temp2
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1 2> /dev/null 
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2 2> /dev/null 
ffmpeg -f mpegts -i "concat:temp1|temp2" -c copy -bsf:a aac_adtstoasc output.mp4
于 2014-10-19T15:58:28.337 に答える
0

ffmpegこれを行うためにコマンドを使用しています。次に例を示します。

ffmpeg -i concat:/dev/null|file1.ts|file2.ts -c copy -bsf:a aac_adtstoasc -y output.mp4

Distributed parallel video trascodingについては、この github プロジェクトをご覧ください。

于 2016-03-19T05:04:58.760 に答える
0

このメソッドは、 生の *.aviファイルのみを連結する場合にのみ機能します。しかし、avi ファイルに参加しようとする多くの人がこの質問を閲覧することになるため、とにかくここに回答を投稿します。

cat *.avi > out_tmp.avi
avconv -i out_tmp.avi -c copy output.avi

もう一度:圧縮されていない *.aviファイルでのみ機能します。

于 2014-10-01T22:16:41.377 に答える
0

私はavidemux (gtk ツール) でそれを行いました。ほとんどの Linux でパッケージとして利用でき、Windows と Mac でも利用できます。最初のファイルを開いただけです。その後、次のものを順番に追加しました。最後に、オーディオとビデオのコピーとフォーマット mp4 を使用して連結ビデオを保存しました。

それはうまくいきました!

于 2015-05-05T17:38:01.027 に答える