FFMPEGでサムネイルを作成する

このエントリーをはてなブックマークに追加

notoです。

FFMPEGで複数サムネイルを切りだしたところ、稀にグレー一色のJPGファイルが書き出されている現象があったので、備忘録的なメモです。


 

問題があったコマンドです。

$time   = '00:00:10'; // 秒または、HH:MM:SS[.xxx]形式
$video  = 'hoge.mpg';
$img    = 'hoge.jpg';

$cmd = "ffmpeg -ss $time -i $video -vcodec mjpeg -vframes 1 -an -f image2 $img";
//コマンド ffmpeg -ss 00:00:10 -i hoge.mpg -vcodec mjpeg -vframes 1 -an -f image2 hoge.jpg
exec($cmd);

 
このコマンドを実行すると以下のワーニングが発生し、切り出したJPEGファイルがグレー一色となります。

 warning: first frame is no keyframe

 
色々試してみたのですが、うまくいかず結局 ss オプションの代わりに、 itsoffset オプションを利用しました。

$time   = '00:00:10'; // 秒または、HH:MM:SS[.xxx]形式
$video  = 'hoge.mpg';
$img    = 'hoge.jpg';

$cmd = "ffmpeg -itsoffset -$time -i $video -vcodec mjpeg -vframes 1 -an -f image2 $img";
//コマンド ffmpeg -itsoffset -00:00:10 -i hoge.mpg -vcodec mjpeg -vframes 1 -an -f image2 hoge.jpg
exec($cmd);

 

この方法は確実にサムネイルを切りだすことができますが、一つデメリットがあります。

 
切り出すまで時間がかかる。。。。
 

んーもっといい方法はないですかね。
 

    • さかい
    • 2012 03/02 10:36am

    例の動画エンコーダってまだ開発してるんですか?

    1回のエンコードで52.5円とかのPayPal少額課金で使えるようにして下さい!

    それは半分冗談として、普通に開発マイルストーンが公開されるとうれしいです!

    • noto
    • 2012 03/02 11:08pm

    まだやってるよー。
    オレオレマイルストーンしかないよ・・・

    エンコーダーの方はCakeに乗せ変えたよ。次はCMSのリファクタリングをしつつHadoopやりつつ、負荷分散させたいなとは思ってるよ。

    • さかい
    • 2012 03/03 9:50am

    おお!エンコーダーcakeにしたのか!
    hadoopってどこに使うんじゃー

    そのへんの経緯とか、ネタにしてくれたら嬉しいわー。
    もう企業ブログにしちゃいなよー

      • noto
      • 2012 03/03 2:59pm

      企業ブログにしたら外野がうるさそうじゃん。。。

        • さかい
        • 2012 03/04 9:38pm

        そういうの乗り越えなきゃ!

return top