首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ffmpeg从文件夹中的所有视频中提取帧

如何使用ffmpeg从文件夹中的所有视频中提取帧
EN

Stack Overflow用户
提问于 2015-01-28 14:30:24
回答 1查看 6K关注 0票数 2

我目前能够使用以下行从文件中提取图像

代码语言:javascript
复制
ffmpeg -i inputfile.avi -r 1 image-%d.jpeg

但是,我希望将其应用于文件夹中的所有文件,并将其放置在输出文件夹中。

假设我的当前文件夹保存了所有视频:

投入-录像/

-视频

-视频

我想要输出文件夹中的所有内容:

产出/

-录像/

-*

-录像/

-*

使用bash脚本进行此操作的最简单方法是什么?(或其他更好的东西)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 14:54:23

如果文件夹深度不变,则文件扩展名始终是avi,顶部文件夹称为“输入-视频”和“输出”:

代码语言:javascript
复制
#!/bin/bash
for file in input-videos/*/*.avi; do
    destination="output${file:12:${#file}-17}";
    mkdir -p "$destination";
    ffmpeg -i "$file" -r 1 "$destination/image-%d.jpeg";
done

如果顶部的文件夹只是被调用,并且可以在任何地方,并且文件扩展名是不同的,那么下面是一个脚本,您可以像./script.sh <input folder> <output folder> <file extension>一样调用它

代码语言:javascript
复制
#!/bin/bash
if [ "$1" == '' ] || [ "$2" == '' ] || [ "$3" == '' ]; then
    echo "Usage: $0 <input folder> <output folder> <file extension>";
    exit;
fi
for file in "$1"/*/*."$3"; do
    destination="$2${file:${#1}:${#file}-${#1}-${#3}-1}";
    mkdir -p "$destination";
    ffmpeg -i "$file" -r 1 "$destination/image-%d.jpeg";
done
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28194756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档