FFMPEG-PHP Classを使用してmpeg動画をflvに変換する
FFMPEG-PHP Class内には動画ファイルをflvファイルに変換する汎用的なクラスが用意されています。
本記事ではFFMPEG-PHP Class内の以下のPHPファイルを利用してmpeg動画をflvへ変換します。
| クラス名 | ファイル名 | 概要 |
| PHPVideoToolkit | phpvideotoolkit.php5.php | PHP内からffmpegを使って動画を変換するphp5用のクラス |
| VideoTo | videoto.php | PHPVideoToolkitクラスを拡張しFLV,PSP,iPod用の動画変換メソッドを備えたクラス |
各クラスの主なメソッドは次のようになります。
| メソッド名 | 概要 |
| getFFmpegInfo() | インストールされているffmpegの対応コーデック、対応フォーマットの情報を取得する |
| getFileInfo(ファイル名, 一時ディレクトリ) | 動画ファイルの情報を取得する |
| setInputFile(ファイル名, フレームレート) | 変換する動画ファイルを指定する |
| setFormatToFLV(周波数, オーディオビットレート) | FLVへ変換するためにffmpegコマンドオプションを設定する |
| setFormat(フォーマット) | 変換する動画のフォーマットを指定する |
| setAudioFormat(フォーマット) | 変換する動画のオーディオフォーマットを指定する |
| setAudioCodec(コーデック) | 変換する動画のオーディオコーデックを指定する |
| setVideoCodec(フォーマット) | 変換する動画のビデオコーデックを指定する |
| setAudioBitRate(ビットレート) | 変換する動画のオーディオビットレートを指定する |
| setVideoBitRate(ビットレート) | 変換する動画のビデオビットレートを指定する |
| setOutput(出力ディレクトリ, 出力ファイル名, 上書きするか?) | 変換した動画の出力先を設定する |
| addCommand(コマンド, 引数) | ffmpegの実行オプションを指定する |
| execute(マルチエンコードを行うか?, ログを出力するか?) | ffmpegのコマンドを実行する |
その他のPHPVideoToolKitクラスのメソッドは非常に多いので、詳細はドキュメントを参照してください。
| メソッド名 | 概要 |
| FLV(ファイル名, オプション) | FLV動画へ変換する |
| PSP(ファイル名, オプション) | PSP動画へ変換する |
| iPod(ファイル名, オプション) | iPod動画へ変換する |
各メソッドに渡すオプションの配列内で変換後の動画を出力するディレクトリ、ファイル名を指定します。
上記2つのクラスを使ってcat.mpegをcat.flvに変換するサンプルを作成します。
// FFMPEG-PHP Class をロード
require_once 'phpvideotoolkit.php5.php';
require_once 'adapters/videoto.php';
// 変換する動画ファイル
$input_file = 'cat.mpeg';
// 動画変換時のオプション
$options = array(
// 出力先ディレクトリ
'output_dir'=>'/var/www/html/',
// 出力ファイル名
'output_file'=>'cat.flv'
);
// flvへ変換
VideoTo::FLV($input_file, $options);
上記PHPを実行すると/var/www/html/cat.flvのファイルが生成されます。
生成したcat.flvの動画ファイルをブラウザから閲覧します。
GPL licenseで配布されているFlash プレーヤー「flowplayer」をWebページよりダウンロードします。ダウンロードページには有料のものもありますので「GPL license (Free)」と記されたものをダウンロードしてください。解凍後、「flowplayer-3.1.5.swf」「example/flowplayer-3.1.4.min.js」を/var/www/html/にアップロードします。html内でflowplayer-3.1.4.min.jsを呼び出した後、次のようにaタグでプレーヤーで表示させたい動画を指定するとブラウザ上でflowplayerを通して動画が閲覧できます。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="flowplayer-3.1.4.min.js"></script>
<title>cat.flv</title>
</head>
<body>
<a href="cat.flv" style="display:block;width:520px;height:330px" id="player"></a>
<script>
flowplayer("player", "flowplayer-3.1.5.swf");
</script>
</body>
</html>
ブラウザでアクセスすると次のようにプレーヤーでcat.flvが再生できます。
まとめ
本記事では動画のプロパティ取得、フレーム画像の切り出し、flvへの変換について説明しました。FFMPEG-PHP Classを利用すると上記のような機能が比較的容易に実装できます。
次回記事ではYouTubeで公開されている動画をダウンロードして3gp動画へ変換する方法を、FFMPEG-PHP Classを拡張した形式で説明する予定です。

