PHPプロ!TIPS+

ffmpeg-phpで動画のデータを取得しよう

オープンソースで動画や音声を変換するツールと言えば、ffmpegがあります。多彩なコーデックに対応しており、いろいろなものに使われています。

このffmpegの機能の一部をPHPで簡単に使えるようにしたエクステンションがffmpeg-phpです。これを使えば、少ないコードで簡単に、動画のプロパティや画像を取得できます。

では、早速使い方の解説です。

ffmpeg-phpのインストールには、ffmpeg本体が必要で、ffmpegのコンパイル時に

--enable-shared

をつけておく必要があるのでご注意ください。

ffmpegの準備ができたら、ffmpeg-phpのソースコードを

http://ffmpeg-php.sourceforge.net/

からダウンロード、解凍して、

phpize
./configure
make 
make install

とするだけでインストールは終了です。

動作の確認は、解凍したffmpeg-phpのディレクトリにあるtests と test_ffmpeg.phpをドキュメントルートにコピーしてアクセスし、テスト用ファイルのデータが出力されれば正常です。

次に、実際の使い方です。

dl("ffmpeg." . PHP_SHLIB_SUFFIX);    //エクステンションをロード

$movie_path = 'tests/test_media/test.avi';  //画像のパス

$movie = new ffmpeg_movie($movie_path);    //インスタンス生成

echo $movie->getFileName();  //ファイル名取得、表示
echo "
"; echo $movie->getFrameRate(); //フレームレート表示
/*  実行結果

tests/test_media/test.avi
24

*/

以上、わずか数行書くだけで、test.aviのプロパティが取得できます。

次に、画像の取得と表示方法です。(GDが必要です)

$frame = $movie->getFrame(100);
$image = $frame->toGDImage();

getFrameで取得するフレームを指定し、toGDImageでresouseを返しますので、

ob_end_clean();
header('Content-Type: image/jpeg');
imageJpeg($image,null,100);
imageDestroy($image);

とすると、画像を表示することができます。

これらを応用すると、例えば、あるディレクトリに画像を置くだけで、動的に画像のタイトルを取得し、画像を出力してサムネイルを作成したり、動画のデータを自動的にデータベースに入力するなどの使い方がでます。

また、ここで紹介したものはほんの一部ですので、他に使用できるメソッドなどは、公式のAPIドキュメント

http://ffmpeg-php.sourceforge.net/apidoc.php

をご覧ください。

ffmpeg-phpは面倒な画像取得などを少しのコードで実現できるので、機会があれば使ってみてはいかがでしょうか。

バックナンバーについて

TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。

Tipsꗗy[W 

Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)