1

我有一个包含 10,000 多个视频的文件夹。对于每个视频,我想创建一个随机缩略图。

我的视频文件在目录 /videos 缩略图在目录 /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");

有人愿意帮助我吗?

4

3 回答 3

2

你可以试试这个:

for f in $MOVIEDIR
do
 ffmpeg -i "$f" -t 2 -r 0.5 "$f"%d.jpg
done

你应该让 ffmpeg 行做你想做的事情,并且效率还可以。用较小的电影文件夹将其包装在脚本中......

于 2013-03-22T19:05:55.673 回答
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 之间,这是快照的时间,以秒为单位

于 2015-03-17T11:21:33.357 回答
-1

yes, shell can help you, also, you can run many scripts at the same time, only checking if the jpg is available before converting.

于 2013-03-22T09:41:28.227 回答