SHOEISHA iD

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

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

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

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

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

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

ffmpeg-phpを使った動画プロパティの取得

 FFMPEG-PHP Classと一緒に配布されているサンプルの動画を利用して、動画のプロパティを取得するサンプルを作成します。

 php_ffmpegをインストールしたことでphpからffmpegの機能を利用できるffmpeg_movie、ffmpeg_frameというクラスが使えます。

 ffmpeg_movieのメソッドの代表的なものに以下のメソッドがあります。

ffmpeg_movieの代表的なメソッド
メソッド名 概要
getDuration() 再生時間(秒)を取得
getFileName() ファイル名を取得
getFrameRate() フレームレートを取得
getAudioCodec() オーディオコーデックを取得
getFrame(フレームのコマ数) 指定された動画のコマをffmpeg_frameオブジェクトとして取得する
ffmpeg_frameの代表的なメソッド
メソッド名 概要
getWidth() フレームの幅を取得する
getHeight() フレームの高さを取得する
toGDImage() フレームをGDオブジェクトとして取得する

 ffmpeg_movieを使って動画のプロパティを取得するサンプルを作成します。

 ファイル名をクエリの変数名「file」で指定してffmpeg_movieの各メソッドで値を取得します。

[リスト11]3gp.php(抜粋)
<?php
// ファイル名を取得
$movie_file = $_GET['file'];

// ffmpeg_movie をコール
$movie = new ffmpeg_movie($movie_file);
?>
<html>
<body>
FileName   : <a href="<?php echo $movie_file; ?>"><?php echo $movie->getFileName(); ?></a><br />
Framerate  : <?php echo $movie->getFrameRate(); ?><br />
VideoCodec : <?php echo $movie->getVideoCodec(); ?><br />
BitRate : <?php echo $movie->getBitRate(); ?><br />
AudioCodec : <?php echo $movie->getAudioCodec(); ?><br />
AudioSampleRate : <?php echo $movie->getAudioSampleRate(); ?><br />
<br />
<img src="3gp_image.php?file=<?php echo $movie_file; ?>" />
</body>
</html>

 ffmpeg_frameのメソッドを利用して動画内の特定のフレームを取り出して画像に変換します。

[リスト12]3gp_image.php(抜粋)
// ファイル名を指定
$movie_file = $_GET['file'];

// ffmpeg_movie をコール
$movie = new ffmpeg_movie($movie_file);

// 10フレームを取得
$frame = $movie->getFrame(10);
// 取得したフレームを画像の形式に
$image = $frame->toGDImage();
// 表示
header('Content-Type: image/jpeg');
imageJpeg($image,null,100);
imageDestroy($image);

 画像を表示させる際に「Content-Type: image/jpeg」のヘッダを付加してimgJpeg関数でjpegとして出力しています。

 http://[ドメイン]/3gp.php?file=MOV00007.3gpでアクセスすると次のように表示されます。

3gp.php実行結果
3gp.php実行結果

次のページ
FFMPEG-PHP Classを使用してmpeg動画をflvに変換する

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

目的に応じて適材適所で使う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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー