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);
この方法は確実にサムネイルを切りだすことができますが、一つデメリットがあります。
切り出すまで時間がかかる。。。。
んーもっといい方法はないですかね。
例の動画エンコーダってまだ開発してるんですか?
1回のエンコードで52.5円とかのPayPal少額課金で使えるようにして下さい!
それは半分冗談として、普通に開発マイルストーンが公開されるとうれしいです!
まだやってるよー。
オレオレマイルストーンしかないよ・・・
エンコーダーの方はCakeに乗せ変えたよ。次はCMSのリファクタリングをしつつHadoopやりつつ、負荷分散させたいなとは思ってるよ。
おお!エンコーダーcakeにしたのか!
hadoopってどこに使うんじゃー
そのへんの経緯とか、ネタにしてくれたら嬉しいわー。
もう企業ブログにしちゃいなよー
企業ブログにしたら外野がうるさそうじゃん。。。
そういうの乗り越えなきゃ!