如何在ffmpeg中的输出文件名中包含输入文件名

如何在ffmpeg中的输出文件名中包含输入文件名

我想从视频中提取帧作为图像,并且希望将每个图像命名为.我怎样才能做到这一点?InputFileName_number.bmp

我尝试了以下命令:

ffmpeg -i clip.mp4 fr1/$filename%d.jpg -hide_banner

但它没有按我想要的方式工作。例如,我想得到clip_1.bmp,但我得到的是1.bmp

我正在尝试将它与 GNU 并行一起使用来提取多个视频的图像,而我对两者都是新手,所以我想要一些动态文件命名之王input-> input_number.bmp

答案1

$filename作为 shell 变量处理。

关于什么

ffmpeg -i clip.mp4 fr1/clip_%d.jpg -hide_banner

或者

$mp4filename=clip
ffmpeg -i ${mp4filename}.mp4 fr1/${mp4filename}_%d.jpg -hide_banner

更新:要与 gnu parallel 一起使用,您可以使用parallel 的-i选项:

-i
通常,命令会在命令行末尾传递参数。使用此选项,命令中的任何“{}”实例都将替换为参数。

生成的命令行可能很简单

parallel -i ffmpeg -i {} fr1/{}_%d.jpg -hide_banner -- *.mp4

如果您可以接受输出文件中的扩展名。

请注意,您实际上可能不想在传统硬盘上并行运行它,因为并发 I/O 会减慢速度。

编辑:正如 @DonHolgo 所指出的,修复了变量引用。

相关内容