これら 2 つの FFmpeg コマンドを 1 つのコマンドに結合するにはどうすればよいでしょうか?

これら 2 つの FFmpeg コマンドを 1 つのコマンドに結合するにはどうすればよいでしょうか?

ffmpeg を使用して複数の.mp4ファイルを変更します。

まず、このコマンドを使用して、デフォルトの言語を から に変更しengますfr

ffmpeg.exe -i "imput 1.mp4" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default "Output 2.mp4" 

次に、このコマンドを使用して、.srtファイルからにソフト字幕を追加します.mp4

ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -c copy -c:s mov_text -metadata:s:s:0 language=fr "Output 1.mp4"

これら 2 つのコマンドは独立して動作しますが、1 行に組み合わせたいと思います。

このようなことを試してみましたが、音声のみが変更され、字幕には影響がありません。

ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -c:s mov_text -metadata:s:s:0 language=fr Output 1.mp4"

何かがおかしいのは分かっているのですが、原因が分かりません。

私の結合コマンドの何が問題なのか誰か教えてもらえますか?

前にも言ったように、私は複数のファイル (正確には 314 個) を扱っており、各ファイルには独自の名前があり、毎回手動でファイル名を変更するのは面倒です。ディレクトリ内の各ファイルに対してこれを行う方法はありますか?

答え1

ビデオと字幕が保存されているフォルダー内でコマンド プロンプトを開き、次のコマンドを試してください。

for %a in (*.mkv *.mp4) do ffmpeg -i "%a" -i "%~na.srt" -map 0 -map 1:s:0 -disposition:a:0 0 -disposition:a:1 default -c copy -metadata:s:s:0 language=fr "%~na_new.%~xa"

古いビデオと同じ名前で、名前に「new」が付き、オーディオと字幕が変更された新しいビデオが作成されます。

関連情報