Video 使用zsh和ffmpeg从嵌套目录中的视频递归生成静止图像
如果所有MP4都在同一目录中,以下命令将执行我需要执行的操作:Video 使用zsh和ffmpeg从嵌套目录中的视频递归生成静止图像,video,ffmpeg,terminal,zsh,Video,Ffmpeg,Terminal,Zsh,如果所有MP4都在同一目录中,以下命令将执行我需要执行的操作: 用于*.mp4中的i;do ffmpeg-i“$i”-vf fps=0.5“$i-%d.jpg”;完成 例如 1.mp4 2.mp4 但是,我的这些文件夹现在位于同一目录中的文件夹中,例如: dir1/1.mp4 dir2/2.mp4 如何修改此命令以递归方式进入每个目录,并对文件夹中找到的每个视频执行ffmpeg 最终结果应该是: dir1 1.mp4 1-1.jpg 1-2.jpg 1-3.jp
用于*.mp4中的i;do ffmpeg-i“$i”-vf fps=0.5“$i-%d.jpg”;完成
例如
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\u glob
选项。您可以使用内置的setopt
启用选项(例如在~/.zshrc
中):
**
全局匹配零个或多个目录。因此,***.mp4
将匹配示例中的dir1/1.mp4
和dir2/2.mp4
。假设ffmpeg在使用$i
的两个参数中都允许完整路径,则无需更改任何其他内容:
for i in **/*.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done
从zsh
5.2开始,您还可以另外设置GLOB\u STAR\u SHORT
,这允许您将***.mp4
缩短为***.mp4
for i in **.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done
for i in **.mp4; do ffmpeg -i "$i" -vf fps=0.5 "$i-%d.jpg"; done