http://blog.ishiro.com

2007/5/3 木曜日

動画ファイルからサムネイル作成ツール

Filed under: ツール, ビデオ, symfony — ishiro @ 4:59:42

PHPを使って.aviや.flvという動画ファイルからサムネイルを自動的に作成してくれるツールを作りました。.aviファイルを.flvファイルに変換してくれるようにもしてあります。

ffmpeg.class.tgz

PHPのサーバで動画からサムネイルを作ってくれるライブラリとしてはffmpeg-phpが有名だけどPHPのコンパイル作業から始めないとだめだし、連続キャプチャのサムネイルは作れないのです。

Symfonyのクラスとして作成していますが、普通にrequireすればほとんどどのプログラムからも使えると思います。システムにはffmpegコマンドをインストールしておいてください。サーバ側で次のように連続して一枚の動画サムネイルを作ってくれるソフトがなかったので自分で作りました。Windowsの対話型のプログラムならいくつかあるんですけどね。

mvi_0355.jpg

コードの中で次の値を変更すれば自由にお好みの動画サムネイルが作れると思います。オリジナルのサイズと異なる比率を指定してもちゃんと比率を正しく保ったまま中央部分を抜き出してくれるようにしてあります。

$thumb_count = 5; → サムネイル枚数
$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/’);

細かいところを言ったら修正が色々必要になったり、もっと使いやすくもできるけどとりあえずちゃんと動いてくれています(^-^;



コメント (10) »

  1. まじっすかー。
    動画のサムネイル作るのにzphotoのサムネイルがうまく動かなくて探していたとこでした。(^^)/~

    コメント by まっちゃん — 2007/5/15 火曜日 @ 10:33:46

  2. うん、とりあえずちゃんと動いているよ。エラーハンドリングとかパラメータ設定とかは自分で修正して書いておいてね~。

    コメント by ishiro — 2007/5/15 火曜日 @ 10:41:04

  3. はじめまして
    ffmpegを利用したいのですが、ダウンロードできません。
    http:///blog.ishiro.com/wp-content/uploads/2007/05/ffmpeg.class.tgz
    すみませんが、ファイルを確認していただけませんか。

    コメント by hide — 2007/8/28 火曜日 @ 21:40:05

  4. hideさん

    本当だ、IEだとうまくダウンロードできませんね。apacheの設定の問題でしょうか。

    とりあえずFirefoxなど他のブラウザで落としてください。

    コメント by ishiro — 2007/8/29 水曜日 @ 11:15:54

  5. 通りがかりの人ですが
    http:///blog.ishiro.com/wp-content/uploads/2007/05/ffmpeg.class.tgz

    http:///から始まっているのでダウンできないのだと思います

    コメント by fax — 2007/12/29 土曜日 @ 19:29:37

  6. 「ffmpegコマンドをインストール」とはコマンドで実行できるようにということですか??

    コメント by pinky — 2008/1/28 月曜日 @ 16:19:40

  7. はい、そうです。

    コメント by ishiro — 2008/1/28 月曜日 @ 17:08:05

  8. すばらしい機能、ありがとうございます!
    初心者なのでちょっとお聞きしたいのですが、
    解凍できた、ffmpeg.class.phpの設置場所は決まっているのでしょうか?
    自分がPHPをアップロードしているところに共に置いて、インクルードすれば
    良いのでしょうか?

    コメント by sora — 2008/6/28 土曜日 @ 21:26:00

  9. ダウンロードして使わせていただきました。
    ありがとうございました。

    コメント by はひふ — 2008/6/30 月曜日 @ 12:12:20

  10. 使わせていただきました。

    次のようなメッセージが吐き出されました。
    サムネイルも作成されなかったです。
    何が悪いですか、ご教授お願いいたします。
    ちなみに、こちらの環境は、
    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

コメント RSS TrackBack URI

コメントをどうぞ