我有一个包含10,000多个视频的文件夹。对于每个视频,我想创建一个随机缩略图。
我的视频文件位于目录/视频中 缩略图位于目录/ thumbs
中所有视频都命名为ID.mp4,其中ID是视频文件的任意名称。 我希望拇指是ID.jpg。
我目前使用这个与php一起生成缩略图,但效率不高,无法为所有这些视频执行。
$video = "/videos";
$image = "/thumbs";
$time = rand(1,300);
shell_exec("ffmpeg -i $video -an -ss $time -f mjpeg -t 1 -r 1 -y -s 620x370 $image 2>&1");
有人愿意帮我这个吗?
答案 0 :(得分:0)
是的,shell可以帮助你,同时,你可以同时运行许多脚本,只检查转换前jpg是否可用。
答案 1 :(得分:0)
你可以试试这个:
for f in $MOVIEDIR
do
ffmpeg -i "$f" -t 2 -r 0.5 "$f"%d.jpg
done
你应该让ffmpeg行做你想要的并且效率很高。用较小的电影文件夹将其包装在脚本中......
答案 2 :(得分:0)
我用这段代码做了......
testApp="avconv"; which $testApp >/dev/null 2>&1 || { echo "$testApp not found, try 'apt-get install libav -y'"; exit 1; }
for f in *.mp4 ; do f2=${f%.*}; r1=$((RANDOM%300+30)); [ -f "$f2.jpg" ] || { avconv -ss $r1 -i "$f" -vsync 1 -r 1 -an -y -vframes 1 -timelimit 1 -vf scale='-1':'640',crop=640:480 "$f2.jpg"; }; done
相同的代码
testApp="avconv"; which $testApp >/dev/null 2>&1 || { echo "$testApp not found, try 'apt-get install libav -y'"; exit 1; }
for f in *.mp4 ; do
f2=${f%.*}; r1=$((RANDOM%300+30))
[ -f "$f2.jpg" ] || {
avconv -ss $r1 -i "$f" -vsync 1 -r 1 -an -y -vframes 1 -timelimit 1 -vf scale='-1':'640',crop=640:480 "$f2.jpg"
}
done
F =文件名
f2 =没有扩展名的文件名
r1 =随机整数,介于20-300之间,这是快照的时间(秒)