2013-03-22 101 views
-1

我擁有超過10,000個視頻的文件夾。對於我想要創建隨機縮略圖圖像的每個視頻。Bash腳本爲目錄中的所有視頻文件生成縮略圖

我的視頻文件在目錄/視頻 縮略圖目錄/大拇指

所有的視頻被命名爲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"); 

有人在意幫助我嗎?

+6

回覆:「它效率不夠」:你有沒有調查過這是爲什麼?因爲我認爲大部分時間都花在'ffmpeg'本身,在這種情況下,從PHP切換到Bash並不會真正起作用。 – ruakh 2013-03-22 01:28:20

+0

不是很好的建議......但mencoder也有一個視頻輸出到PNG選項。 – 2013-03-22 01:32:21

回答

0

是的,shell可以幫助你,也可以同時運行很多腳本,只有在轉換之前檢查jpg是否可用。

0

你可以試試這個:

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

你應該得到的ffmpeg線做ü想要什麼,並用OK效率。與較小的電影文件夾中的腳本把它包...

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之間,這是以秒爲單位的時間快照

相關問題