次のコマンドを使用して、複数のファイルを正常に結合できます。
ffmpeg -f concat -i input.txt -codec copy output.mp4
このコマンドの唯一の問題は、input.txtというテキストファイルからファイルパスを読み取る必要があることです。
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
ファイルからファイルパスを読み込まずに同じ目標を達成する方法はありますか?私は運なしで以下を試みました:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
別のコマンドを使う必要がありますか?
コメントで述べたように、Stack Overflowには、連結に使用できるオプションの詳細な説明と、使用しているファイルの種類に応じてどの方法を使用するかについての説明があります。
どうやってFFmpegを使って2つのMP4ファイルを連結しますか?
ファイルを結合するために 連結プロトコル メソッドを使うことができるはずです:
ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4
さらに、FFmpegマニュアルでは、MP4ファイルを損失なく結合するためにMP4ファイル専用の方法について説明していますが、一時ファイル(または名前付きパイプ)を作成する必要があります。
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4
Listをstdout
に出力し、ffmpegによってstdin
からリストを読み取ることで、fileをlistに置き換えることができます。
(echo file 'a.mp4' & echo file 'b.mp4') | ffmpeg -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -vcodec copy -acodec copy "result.mp4"
いいえ、ffmpeg concat demuxerを1つのコマンドラインで使用しても問題ありません。ファイルのリストを使って入力テキストファイルを作成する必要があります。私はこれが私自身奇妙だと思いました、多分誰かが後でこれもFFMpegを加えるでしょう。
この質問に対する受け入れられた答えは、OPが尋ねたものであるconcat demuxerではなく、concatプロトコルを使用します。