動画ファイルからサムネイル作成ツール
PHPを使って.aviや.flvという動画ファイルからサムネイルを自動的に作成してくれるツールを作りました。.aviファイルを.flvファイルに変換してくれるようにもしてあります。
PHPのサーバで動画からサムネイルを作ってくれるライブラリとしてはffmpeg-phpが有名だけどPHPのコンパイル作業から始めないとだめだし、連続キャプチャのサムネイルは作れないのです。
Symfonyのクラスとして作成していますが、普通にrequireすればほとんどどのプログラムからも使えると思います。システムにはffmpegコマンドをインストールしておいてください。サーバ側で次のように連続して一枚の動画サムネイルを作ってくれるソフトがなかったので自分で作りました。Windowsの対話型のプログラムならいくつかあるんですけどね。

コードの中で次の値を変更すれば自由にお好みの動画サムネイルが作れると思います。オリジナルのサイズと異なる比率を指定してもちゃんと比率を正しく保ったまま中央部分を抜き出してくれるようにしてあります。
$thumb_count = 5; → サムネイル枚数
$thumb_width = 120; → サムネイル一枚の幅
$thumb_height = 100; → サムネイル一枚の高さ
$thumb_width = 120; → サムネイル一枚の幅
$thumb_height = 100; → サムネイル一枚の高さ
こんな感じで呼び出すと/home/outputdir/test.jpgとしてサムネイルを作ってくれます。
getThumb(’/home/inputdir/test.flv’, ‘/home/outputdir/’);
.aviファイルを.flvに変換するにはこんな感じで呼び出します。これで/home/outputdir/test.flvが作成されます。
getFlv(’/home/inputdir/test.avi’, ‘/home/outputdir/’);
細かいところを言ったら修正が色々必要になったり、もっと使いやすくもできるけどとりあえずちゃんと動いてくれています(^-^;
TrackBack URI : http://blog.ishiro.com/wp-trackback.php?p=182

まじっすかー。
動画のサムネイル作るのにzphotoのサムネイルがうまく動かなくて探していたとこでした。(^^)/~
コメント by まっちゃん — 2007/5/15 火曜日 @ 10:33:46
うん、とりあえずちゃんと動いているよ。エラーハンドリングとかパラメータ設定とかは自分で修正して書いておいてね~。
コメント by ishiro — 2007/5/15 火曜日 @ 10:41:04
はじめまして
ffmpegを利用したいのですが、ダウンロードできません。
http:///blog.ishiro.com/wp-content/uploads/2007/05/ffmpeg.class.tgz
すみませんが、ファイルを確認していただけませんか。
コメント by hide — 2007/8/28 火曜日 @ 21:40:05
hideさん
本当だ、IEだとうまくダウンロードできませんね。apacheの設定の問題でしょうか。
とりあえずFirefoxなど他のブラウザで落としてください。
コメント by ishiro — 2007/8/29 水曜日 @ 11:15:54
通りがかりの人ですが
http:///blog.ishiro.com/wp-content/uploads/2007/05/ffmpeg.class.tgz
は
http:///から始まっているのでダウンできないのだと思います
コメント by fax — 2007/12/29 土曜日 @ 19:29:37
「ffmpegコマンドをインストール」とはコマンドで実行できるようにということですか??
コメント by pinky — 2008/1/28 月曜日 @ 16:19:40
はい、そうです。
コメント by ishiro — 2008/1/28 月曜日 @ 17:08:05
すばらしい機能、ありがとうございます!
初心者なのでちょっとお聞きしたいのですが、
解凍できた、ffmpeg.class.phpの設置場所は決まっているのでしょうか?
自分がPHPをアップロードしているところに共に置いて、インクルードすれば
良いのでしょうか?
コメント by sora — 2008/6/28 土曜日 @ 21:26:00
ダウンロードして使わせていただきました。
ありがとうございました。
コメント by はひふ — 2008/6/30 月曜日 @ 12:12:20
使わせていただきました。
次のようなメッセージが吐き出されました。
サムネイルも作成されなかったです。
何が悪いですか、ご教授お願いいたします。
ちなみに、こちらの環境は、
OS:CentOS5.2
Apache:httpd-2.2.6
PHP:php-5.2.4
Warning: imagecreatefromjpeg(/usr/local/apache2/htdocs/ffmpeg/test-0.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 54
Warning: getimagesize(/usr/local/apache2/htdocs/ffmpeg/test-0.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 57
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 65
Warning: imagecreatefromjpeg(/usr/local/apache2/htdocs/ffmpeg/test-1.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 54
Warning: getimagesize(/usr/local/apache2/htdocs/ffmpeg/test-1.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 57
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 65
Warning: imagecreatefromjpeg(/usr/local/apache2/htdocs/ffmpeg/test-2.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 54
Warning: getimagesize(/usr/local/apache2/htdocs/ffmpeg/test-2.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 57
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 65
Warning: imagecreatefromjpeg(/usr/local/apache2/htdocs/ffmpeg/test-3.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 54
Warning: getimagesize(/usr/local/apache2/htdocs/ffmpeg/test-3.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 57
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 65
Warning: imagecreatefromjpeg(/usr/local/apache2/htdocs/ffmpeg/test-4.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 54
Warning: getimagesize(/usr/local/apache2/htdocs/ffmpeg/test-4.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 57
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/apache2/htdocs/ffmpeg/ffmpeg.class.php on line 65
コメント by snowfox — 2008/9/30 火曜日 @ 15:12:36