bash - 带有 "-pattern_type glob"和 bash 脚本中的变量的 ffmpeg

标签 bash ffmpeg

我试图让 ffmpeg 使用 -pattern_type glob 开关和“/foo/bar/*.jpg”为目录中的所有图片制作视频。如果我只在一个目录中手动执行命令,这很好用。例如:
ffmpeg -framerate 35 -pattern_type glob -i '/root/webcam_test/2018-07-21/*.jpg' -vf scale=1280:-1 -c -c:v libx264 -pix_fmt yuv420p /root/clips/out01_cut.mp4
但是,如果我在 bash 脚本中执行此操作并通过变量设置路径,根据 ffmpegs 输出,该变量将被正确替换,但 ffmpeg 声明

'/root/webcam_test/2018-07-21/*.jpg': No such file or directory



脚本部分如下所示:
for D in `find /root/webcam_test/ -type d`
do
    [...]
    cmd="ffmpeg -framerate 35 -pattern_type glob -i '$D/*.jpg' -vf scale=1280:-1 -c -c:v libx264 -pix_fm                                 t yuv420p /root/clips/$d_cut.mp4"
    echo $cmd
[...]
done

有谁知道如何让 ffmpeg 进行通配符解释,即使路径是由脚本构建的,而不仅仅是尝试简单地使用给定的路径?
提前致以最诚挚的问候和感谢

最佳答案

我有类似的问题。我的解决方案是在 ffmpeg 命令之前更改目录并使用没有目录的模式。 IE。:

cd $D/;ffmpeg -framerate 35 -pattern_type glob -i "*.jpg" -vf scale=1280:-1 -c -c:v libx264 -pix_fmt yuv420p /root/clips/$D_cut.mp4

关于bash - 带有 "-pattern_type glob"和 bash 脚本中的变量的 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51683173/

相关文章:

FFmpeg sidx atom 未显示

ffmpeg - 将gif转换为mp4时需要什么过滤器

bash - shell脚本没有在本地运行

bash - docker-compose 忽略 DOCKER_HOST

linux - 如何检查进程是否在linux中运行

bash - 如何在 Bash 中解除绑定(bind)并重新映射 C-w?

node.js - 在 nodejs 和管道中生成 ffmpeg 以表达的响应

ffmpeg 管道图像到 redis

Python程序从FFPROBE生成的JSON文件中读取并提取特定信息

linux - 递归地将文本添加到文件名