我目前能够使用以下行从文件中提取图像
ffmpeg -i inputfile.avi -r 1 image-%d.jpeg但是,我希望将其应用于文件夹中的所有文件,并将其放置在输出文件夹中。
假设我的当前文件夹保存了所有视频:
投入-录像/
-视频
-视频
我想要输出文件夹中的所有内容:
产出/
-录像/
-*
-录像/
-*
使用bash脚本进行此操作的最简单方法是什么?(或其他更好的东西)
发布于 2015-01-28 14:54:23
如果文件夹深度不变,则文件扩展名始终是avi,顶部文件夹称为“输入-视频”和“输出”:
#!/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>一样调用它
#!/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";
donehttps://stackoverflow.com/questions/28194756
复制相似问题