繁体   English   中英

FFMPEG在引用图像文件时使用错误的参数

[英]FFMPEG using wrong arguements when refering to image files

我正在创建一个bat文件,它将使用FFMPEG将Real Media文件转换为.MP4​​文件。 我正在循环当前文件夹并查找具有.rm扩展名的文件,在视频文件中添加几张图片以在最终产品中创建幻灯片放映效果。

使用此代码,它只能显示一个静态图像:

for %%a in ("*.rm") do ffmpeg -f image2 -r 1/5 -i "img00.jpg" -i "%%a" -c:v libx264 -r 30 -preset slow -crf 20 -c:a libvo_aacenc -b:a 48k -b:v 16k "newfiles\%%~na.mp4"

使用此代码,它应显示一系列照片。 但它没有:

for %%a in ("*.rm") do ffmpeg -f image2 -r 1/5 -i "img%02d.jpg" -i "%%a" -c:v libx264 -r 30 -preset slow -crf 20 -c:a libvo_aacenc -b:a 48k -b:v 16k "newfiles\%%~na.mp4"

运行第二段代码时出现此错误:

找不到路径为'imgC:\\ Data \\ RealtoMP \\ FFMPEG_JPG \\ ffmpegA48V16_AudOnly'的文件,索引范围为0-4 imgC:\\ Data \\ RealtoMP \\ FFMPEG_JPG \\ ffmpegA48V16_AudOnly:没有这样的文件或目录

在我看来,它不是像它应该得到范围参数,而是注入我正在运行的文件的路径。 是什么导致了这个?

编辑:

我通过用另一个%转义%02解决我的问题。 结果是%%02 ,它在脚本中正确运行。

批处理文件中的%0将扩展到批处理文件的路径。

在你的第二个代码示例中,你有一个"img%02d.jpg" - 它将扩展为"img +批处理文件的路径+ 2d.jpg"

当你无法弄清楚批处理文件正在做什么时(特别是当你有很长的命令行时),我发现echo显命令行而不是(或同样)直接调用它是有帮助的。 这使得自己更容易看到问题。 例如:

for %%a in ("*.rm") do (
    echo ffmpeg -f image2 -r 1/5 -i "img%02d.jpg" -i "%%a" -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 48k -b:v 16k "newfiles\%%~na.mp4"
)

这打印出命令行而不是直接调用它,你会立即看到命令行不在你预期的位置。 调整代码直到输出看起来正确,然后删​​除echo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM