我有例如需要轉換的檔案 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
現在,我想一步完成此操作,但失敗了
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"
如何將這兩者正確地融合在一起?我得到的錯誤是
選項 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"
)
儘管注意您正在嘗試執行的操作,但由於您要連接已經是單個文件的同一文件,因此這樣做是否很好?
由於您不能在 for 迴圈中使用多於一組 (),這裡是使用 3 個批次檔的可能解決方案:
您使用啟動命令,因為如果您只是將其放在那裡,它將同時運行兩個批次並立即關閉。
第 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"
請告訴我:)。今晚晚些時候我可以在家裡研究一個更高級的命令來幫助你解決這個問題。