使用 FFMPEG 在输出文件名中使用输入文件名

使用 FFMPEG 在输出文件名中使用输入文件名

当使用带有通配模式的 FFMPEG 作为输入文件列表时,您可以在输出文件名模式中重复使用输入文件名吗?

即输入文件模式*.jpg→输出文件名%{originalFileName}-%01d.jpg

我正在使用命令行版本。

我在文档中找不到这个。如果您能提供支持示例或文档的链接,那将会很有帮助。

答案1

由于仍然没有办法做到这一点,而且这是一个与操作系统无关的问题,所以这里有一个针对我可以测试的每个流行操作系统的解决方案,所以除了 Mac 之外的任何操作系统。

Windows PowerShell:

$fname = 'something'; ffmpeg -i "$fname.jpg" "$fname-%01d.jpg"

Windows 命令:

SET "fname=something" && call ffmpeg -i "%fname%.jpg" "%fname%-%01d.jpg"

call需要确保临时环境变量已设置。

重击:

fname='something' && ffmpeg -i "$fname.jpg" "$fname-%01d.jpg"

答案2

根据要求:操作系统 = win 10 / powershell

(如果需要,我可以在其他操作系统或 shell 上添加示例)

如果您使用带有通配模式的 FFMPEG,则不能直接重复使用文件名。

但只需一点脚本知识就可以做到。

在这种情况下,您可以(取决于您使用的语言)*.jpg在执行的命令中直接使用当前匹配文件的文件名。(使用 FFMPEG 特别容易编写 python 或 bash 脚本,循环foreach抓取任何匹配的文件,获取当前文件名并在 FFMPEG 命令中使用它)

如果这有帮助,您可以将文件名存储为 shell 变量并直接在命令行中使用它,就像在脚本中一样:

$file = "your_filename"

(存储一个file值为“your_filename”的变量)

然后使用变量执行命令:

ffmpeg -i .\$file.jpg [...] .\$file.png

或者,如果将多个视频流转码为图像序列,甚至可以使用增量整数值:

ffmpeg -i .\$file.mp4 [...] .\$file_%03d.png

(回答后意识到这个帖子已经有 4 年了,我希望它仍然能够帮助作者或其他人)

相关内容