video - 使用 zsh 和 ffmpeg 从嵌套目录中的视频递归生成静止图像

标签 video ffmpeg terminal zsh

如果所有 mp4 都在同一目录中,则以下命令将执行我需要执行的操作:
for i in *.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done
例如。

1.mp4
2.mp4

但是,我的这些现在位于同一目录中的文件夹中,例如:

dir1/1.mp4
dir2/2.mp4

如何修改此命令以递归进入每个目录并执行 ffmpeg在文件夹中找到的每个视频上?

最终结果应该是:
dir1
    1.mp4
    1-1.jpg
    1-2.jpg
    1-3.jpg

dir2
    2.mp4
    2-1.jpg
    2-2.jpg
    2-3.jpg

最佳答案

zsh您可以使用 ** 递归匹配目录glob,提供 EXTENDED_GLOB选项已启用。您可以使用 setopt 启用选项内置(例如在您的 ~/.zshrc 中):

setopt extendedglob
** glob 匹配零个或多个目录。所以**/*.mp4将匹配 dir1/1.mp4dir2/2.mp4在你的例子中。假设 ffmpeg 允许在您使用 $i 的两个参数中使用完整路径,无需更改其他任何内容:
for i in **/*.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done

zsh 开头5.2 还可以另外设置GLOB_STAR_SHORT ,它允许您缩短 **/*.mp4**.mp4 .
for i in **.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done

关于video - 使用 zsh 和 ffmpeg 从嵌套目录中的视频递归生成静止图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170802/

相关文章:

video - HTML5 视频缩放模式?

audio - 使用 FFMPEG 从视频中提取音频,但持续时间不同

ffmpeg - FFPLAY 无法在 facebook 上直播 url,即 rtmps url

cygwin 上的 FFMPEG 无法编译 libx264 错误 : unknown type name ‘HMODULE’

r - 是否可以在 R 中默认在新窗口中绘图?

linux - 根据某些条件从文件中提取特定行(命令行)

c++ - 使用 OpenCV 函数的灰度图像的 Videowriter 函数

html - Youtube 背景在 <body> 中拉伸(stretch)到高度和宽度

python - 如何在 Python 中使用 OpenCV 从 POST 请求加载视频?

linux - 有哪些非基于 Linux 的操作系统?