FFmpeg の複数のコマンド (変換してから結合)

FFmpeg の複数のコマンド (変換してから結合)

たとえば、変換が必要なファイル1.mp4、2.mp4、3.mp4などがある

for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%~ni.mp4"

そして連結する

ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy x1.mp4

これを1ステップでやりたいのですが、失敗しました

for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265, -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%~ni.mp4"

これら2つを適切に融合するにはどうすればいいでしょうか?私が受け取ったエラーは

オプション vf (ビデオ フィルターの設定) は入力 URL xmylist.txt には適用できません。入力オプションを出力ファイルに適用しようとしています (またはその逆)。このオプションを、それが属するファイルの前に移動します。入力ファイル xmylist.txt のオプションの解析エラーです。入力ファイルを開くときにエラーが発生しました: 引数が無効です

答え1

やってみました:

for %i in (*.mp4) do ffmpeg -y -i "%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%~ni.mp4" & ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%~ni.mp4"

またはこれをバッチで実行します:

for %%i in (*.mp4) DO (

ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"

ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "%%~ni.mp4"

)

何をしようとしているのかに注意を払ってみると、すでに 1 つのファイルになっている同じファイルを連結するのであれば、この方法で行うのは良いことでしょうか?

for ループでは () のセットを複数使用できないため、3 つのバッチ ファイルを使用する解決策が考えられます。

start コマンドを使用するのは、そこにコマンドを入力するだけで、両方のバッチが実行され、即座に終了するためです。

バッチ 1:

start "Batch2.bat"

start "Batch3.bat"

バッチ2:

for %%i in (*.mp4) DO ffmpeg -y -i "%%i" -vf scale=1280:720 -crf 17 -c:v libx265 "%%~ni.mp4"

バッチ3:

for %%i in (*.mp4) DO ffmpeg -f concat -safe 0 -i xmylist.txt -crf 17 -c copy "x1.mp4"

お知らせください:)。今夜遅くに自宅でもっと高度な cmd を調べて、この問題を解決します。

関連情報