SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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を拡張した形式で説明する予定です。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
目的に応じて適材適所で使うPHPライブラリ連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5173 2010/06/10 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー