たとえば、変換が必要なファイル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 を調べて、この問題を解決します。