CodeZine(コードジン)

特集ページ一覧

PHPで行う動画変換(前編)

目的に応じて適材適所で使うPHPライブラリ(8)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/06/10 14:00
目次

FFMPEG-PHP Classを使用してmpeg動画をflvに変換する

 FFMPEG-PHP Class内には動画ファイルをflvファイルに変換する汎用的なクラスが用意されています。

 本記事ではFFMPEG-PHP Class内の以下のPHPファイルを利用してmpeg動画をflvへ変換します。

FFMPEG-PHP Class内のPHPファイル
クラス名 ファイル名 概要
PHPVideoToolkit phpvideotoolkit.php5.php PHP内からffmpegを使って動画を変換するphp5用のクラス
VideoTo videoto.php PHPVideoToolkitクラスを拡張しFLV,PSP,iPod用の動画変換メソッドを備えたクラス

 各クラスの主なメソッドは次のようになります。

PHPVideoToolkitクラスの主なメソッド
メソッド名 概要
getFFmpegInfo() インストールされているffmpegの対応コーデック、対応フォーマットの情報を取得する
getFileInfo(ファイル名, 一時ディレクトリ) 動画ファイルの情報を取得する
setInputFile(ファイル名, フレームレート) 変換する動画ファイルを指定する
setFormatToFLV(周波数, オーディオビットレート) FLVへ変換するためにffmpegコマンドオプションを設定する
setFormat(フォーマット) 変換する動画のフォーマットを指定する
setAudioFormat(フォーマット) 変換する動画のオーディオフォーマットを指定する
setAudioCodec(コーデック) 変換する動画のオーディオコーデックを指定する
setVideoCodec(フォーマット) 変換する動画のビデオコーデックを指定する
setAudioBitRate(ビットレート) 変換する動画のオーディオビットレートを指定する
setVideoBitRate(ビットレート) 変換する動画のビデオビットレートを指定する
setOutput(出力ディレクトリ, 出力ファイル名, 上書きするか?) 変換した動画の出力先を設定する
addCommand(コマンド, 引数) ffmpegの実行オプションを指定する
execute(マルチエンコードを行うか?, ログを出力するか?) ffmpegのコマンドを実行する

 その他のPHPVideoToolKitクラスのメソッドは非常に多いので、詳細はドキュメントを参照してください。

VideoToクラスの主なメソッド
メソッド名 概要
FLV(ファイル名, オプション) FLV動画へ変換する
PSP(ファイル名, オプション) PSP動画へ変換する
iPod(ファイル名, オプション) iPod動画へ変換する

 各メソッドに渡すオプションの配列内で変換後の動画を出力するディレクトリ、ファイル名を指定します。

 上記2つのクラスを使ってcat.mpegをcat.flvに変換するサンプルを作成します。

[リスト13]flv.php(抜粋)
// 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を通して動画が閲覧できます。

[リスト14]flv.html
<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.html実行結果
flv.html実行結果

まとめ

 本記事では動画のプロパティ取得、フレーム画像の切り出し、flvへの変換について説明しました。FFMPEG-PHP Classを利用すると上記のような機能が比較的容易に実装できます。

 次回記事ではYouTubeで公開されている動画をダウンロードして3gp動画へ変換する方法を、FFMPEG-PHP Classを拡張した形式で説明する予定です。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:目的に応じて適材適所で使うPHPライブラリ

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5