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

あなたは、あなたが望むことを、OKの効率で行う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

はい、シェルはあなたを助けることができます。また、変換する前にjpgが利用可能かどうかを確認するだけで、同時に多くのスクリプトを実行できます。

于 2013-03-22T09:41:28.227 に答える