gpt4 book ai didi

循环复杂的 ffmpeg 命令时 Bash 参数 HELL。我该如何逃脱它?

转载 作者:行者123 更新时间:2023-12-04 23:06:12 25 4
gpt4 key购买 nike

我正在尝试使用 ffmpeg -filter_complex 为一堆视频创建波形 png
单行命令可以正常工作并为单个视频文件生成预期的波形图形:

ffmpeg -i INPUT.mp4 -filter_complex:a "showwavespic=s=1080x120" -frames:v 1 OUTPUT.png
当我尝试自动化多个文件的过程时
for f in *.mp4
do
ffmpeg
-i "$f"
-filter_complex:a "showwavespic=s=1080x120"
-frames:v 1
'"${f%.mp4}.png"'
done
ffmpeg 返回错误:

Unable to find a suitable output format for '"INPUT.png"'

'"INPUT.png"': invalid argument


我还尝试了精简命令:
for f in *.mp4
do
ffmpeg -i "$f" -filter_complex 'showwavespic' -frames:v 1 “${f%.mp4}.png”
done
但得到了相同的参数错误。
我猜这个问题是因为 bash 语法,我没有正确地转义引用的参数。我尝试了多个版本的命令,但没有成功。如何解决这个 for 循环?

最佳答案

删除 ' 周围的单引号 ( "${f%.mp4}.png" ) .

您的第二个命令似乎使用了打印工的引号 ( ) 而不是普通的双引号 ( " ),这正是您想要的。

双引号 ( " ) 告诉 Bash 引号内的内容应被视为调用命令的一个参数,即使其中有空格。引号不会传递给被调用的命令。 Bash 不认为打印者的引号是特殊的,因此它将它们传递给命令,并且您的脚本将不起作用,因为它们实际上不是文件名的一部分。

关于循环复杂的 ffmpeg 命令时 Bash 参数 HELL。我该如何逃脱它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com