当使用带有通配模式的 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 年了,我希望它仍然能够帮助作者或其他人)