我有需要转换的文件 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"
请让我知道:)。今晚晚些时候我可以在家里研究更高级的 cmd 来帮助你解决这个问题。