WEBデザイン・開発講義WEB Design&Development Lecture

「FFmpeg」コマンドとPHPclassラッパーのインストール

「FFmpeg」関連コマンドとPHPclassラッパーのインストールと動作確認

『FFmpeg』と関連するコマンドツールのダウンロードとインストール設置・設定及び動作確認を理解

『FFmpeg』コマンド関連とPHP classの構成※画像クリックで拡大表示(リンク)

  • 『FFmpeg』コマンド関連とPHP classのラッパー環境づくりは、
    「コマンドプロンプト」で動作するツール環境に、「PHP classのラッパー(wrapper)」を通して、動画(映像、音声)を変換、編集できるものです。 『FFmpeg』コマンド関連とPHP classのラッパー環境づくり

『FFmpeg』のダウンロードと
インストール及び動作確認

  1. 「FFmpeg」のダウンロードサイトは、
    http://www.ffmpeg.org/download.html ですが、Windows用は、『zeranoe.com』にある「Zeranoe FFmpeg builds」からダウンロードします。
    FFmpeg」コマンドのダウンロードサイト「Zeranoe FFmpeg builds」 (注)ダウンロードしたファイルは、『7z』形式の圧縮タイプなので、「7z」をインストールしていない場合は、http://7-zip.org/からインストールしてください。
  2. 解凍した「ffmpeg-20140130-git ...」フォルダをCドレイブ直下に『FFmpeg』フォルダとして設置します。
    『FFmpeg』フォルダの設置場所
  3. 「FFmpe」がコマンドプロンプトとして動作するか確認するため、『環境変数』の「path」項目に『C:\FFmpeg\bin\;』を追加します。
    『環境変数』の「path」項目に『C:\FFmpeg\;』を追加
  4. テストビデオのダウンロートと設置
    テスト用のビデオをダウンロードして、『FFmpeg』のフォルダ内に解凍して設置して下さい。
    『test_mv.zip』のダウンロード
  5. コマンドプロンプトの『ffmpeg -h』でヘルプ表示。
    「ヘルプ」の表示には、オプションの「-h」「-?」「-help」「--help」が可能で、その後に「topic」(long/full)を追加するとより詳細なコマンドのヘルプ表示が可能です。
    使い方(usage:)は、
    ffmpeg -i 入力ファイル 出力ファイル」を確認。
    (注)[ ]で囲まれたところは、省略可能を意味します。
    『FFmpeg』のヘルプ表示
  6. コマンドプロンプトでテストビデオ『cat.mpeg』をWEBで利用する『MP4』拡張子に変換。
    カーレントディレクトリ「cd」で『test_mv』フォルダに移動し、『ffmpeg -i cat.mpeg new.mp4』とコマンドを入力すると変換出力されます。入力ファイルのパスには、「-i」の指示子を付加することを忘れないようにしてください。
    『FFmpeg』のヘルプ表示
  7. test_mv』フォルダにある「new.mp4」の出力確認。
    変換出力された『MP4』形式の出力ファイルを起動してビデオ表示するかを確認してください。
    『test_mv』フォルダにある出力ファイル「new.mp4」の確認

『flvtool2』のダウンロード及び設置、コマンド確認

  1. 「flvtool2」のダウンロード・サイト
    「flvtool2」は、flvファイルへの動画変換時にメタデータを付与するツールです。ダウンロードサイトは、https://github.com/unnu/flvtool2で、「Download ZIP」をクリックしてダウンロードします。
    「flvtool2」のダウンロード・サイト
  2. 『flvtool2』の設置場所とコマンドプロンプト
    ダウンロードした「flvtool2-1.0.6」を解凍して、『FFmpeg』の『bin』フォルダに『flvtool2.exe』を設置します。
    カーレントディレクトリ「cd」で『FFmpeg\bin』フォルダに移動し、『flvtool2 -h』とコマンドを入力すると「ヘルプ表示」されることで動作確認します。
    『flvtool2』のコマンドプロンプト

『mencoder』のダウンロード及び設置、コマンド確認

  1. 「MPlayer」のダウンロード・サイト
    『mencoder』は、動画のデコード・エンコード、フィルタリングのツールで、コマンドプロンプトで動作します。「MPlayer」に含まれるので「MPlayer」をダウンロードします。ダウンロードサイトは、http://www.mplayerhq.hu/design7/dload.htmlで、『Binaries』見出しにある「MPlayer Windows builds」の「HTTP」をクリックしてダウンサイトへ移動。
    「MPlayer」のダウンロード・サイト 『x86_64』をクリックしてダウンロードします。
    「MPlayer」の『x86_64』をダウンロード
  2. 『mencoder』の設置場所とコマンドプロンプト
    ダウンロードした「MPlayer-x86_64-r36573+ge11983b.7z」を「7z」で解凍して、『FFmpeg』の『bin』フォルダに『mencoder.exe』を設置します。
    カーレントディレクトリ「cd」で『FFmpeg\bin』フォルダに移動し、出力時に指定するオプションのオーディオ・コーデックのヘルプ表示『mencoder -oac help』とビデオ・コーデックのヘルプ表示『mencoder -ovc help』のコマンド入力します。
    『mencoder』のコマンドプロンプト
  3. AVI形式の動画変換と確認
    mencoder ../test_mv/cat.mpeg -o ../test_mv/new3.avi -ovc lavc -oac copy』とコマンドを入力すると「cat.mpeg」ファイルをAVI形式「new3.avi」に変換されることで動作確認します。
    AVI形式の動画変換のコマンドプロンプト

『qt-faststart』のダウンロードと設置

  1. 「qt-faststart」のダウンロード・サイト
    『qt-faststart』は、動画ファイルを変換しながら再生するということで、すべてをロードしてからでないと表示しない点を改善します。また、モバイル端末(iPhone,Android)でのHLS(HTTP Live Streaming)の対応、HTML5の『video』タグなどに利用できます。「ZeranoeのBlog」サイトからWindows用の「qt-faststart」をダウンロードします。ダウンロードサイトは、http://ffmpeg.zeranoe.com/blog/?p=59です。
    「qt-faststart」のダウンロード・サイト (注)『qt-faststart』は、「html5-video-php」「phpvideotoolkit-V2」のFFmpeg-PHPclassラッパーで利用します。
  2. 『qt-faststart』の設置場所
    ダウンロードした「qt-faststart-git-91a4abd8-winXX.7z」を「7z」で解凍して、『FFmpeg』の『bin』フォルダに『qt-faststart.exe』を設置します。

『Gifsicle』のダウンロードと設置

  1. 「Gifsicle」のダウンロード・サイト
    『Gifsicle』は、アニメーションgifを生成するツールです 。「Little Cambridgeport Design Factory」サイトのhttp://www.lcdf.org/gifsicle/からWindows用の「Gifsicle」をダウンロードします。
    「Gifsicle」のダウンロード・サイト (注)『Gifsicle』は、「phpvideotoolkit-V2」のFFmpeg-PHPclassラッパーで利用します。
  2. 『Gifsicle』の設置場所
    ダウンロードした「gifsicle-1.72-winXX.zip」を解凍して、『FFmpeg』の『bin』フォルダに『gifsicle.exe』を設置します。

『yamdi』のダウンロードと設置

  1. 「yamdi」のダウンロード・サイト
    『yamdi』は、「Yet Another Metadata Injector for FLV」の略でFLV形式ファイルのメタデータ インジェクターするものです 。「Sourceforge」日本サイトのhttp://sourceforge.jp/projects/sfnet_yamdi/からWindows用の「yamdi」をダウンロードします。
    「yamdi」のダウンロード・サイト (注)『yamdi』は、「phpvideotoolkit-V2」のFFmpeg-PHPclassラッパーで利用します。
  2. 『yamdi』の設置場所
    ダウンロードした「yamdi-1.9-winXX.7z」を「7z」で解凍して、『FFmpeg』の『bin』フォルダに『yamdi.exe』を設置します。

『FFmpeg』関連のコマンドプロンプト動作のツール構成内容

  1. 『FFmpeg』関連ツールの設置内容は、
    「FFmpegのPHPclassラッパー」で利用するコマンドツールは、Cドライブ直下にある『FFmpeg』の「bin」フォルダに設置します。8種類のコマンドツールの構成内容である「ffmpeg.exe」「ffplay.exe」「ffprobe.exe」「flvtool2.exe」「gifsicle.exe」「mencoder.exe」「qt-faststart.exe」「yamdi.exe」を確認してください。
    『FFmpeg』関連のコマンドプロンプト動作のツール構成内容

『FFmpeg-PHP Class』のダウンロードと設置

  1. 『FFmpeg-PHP Class』のダウンロード先は、
    「FFmpegのPHPclassラッパー」で利用する『FFmpeg-PHP Class』は、PHP拡張モジュールである『php_ffmpeg.dll』を除いた機能であります。「GitHub」にある『FFmpeg』関連の中から「https://github.com/olaferlandsen/FFmpeg-PHP-Class」より、「Download ZIP」ボタンをクリックしてダウンロードします。
    ダウンロードのサイトには、PHPのプログラミングサンプルが掲示されていますので利用方法と機能を確認できます。
    『FFmpeg-PHP Class』のダウンロード先
  2. ダウンロードした『FFmpeg-PHP-Class-master.zip』を解凍して、『src』フォルダにある「ffmpeg.class.php」をPHP classライブラリーとして利用しますので、WEBサーバのドキュメントルートに『ffmpeg_php』フォルダを作成し、その中に『ffmpegphp_lib』フォルダを作成して「ffmpeg.class.php」を設置します。
  3. FFmpegのPHPラッパー環境のフォルダ『ffmpeg_php.zip』をダウンロードして、設置
    『ffmpeg_php.zip』のダウンロード(107KB)
    (注)解凍したフォルダには、『ffmpegphp_lib』フォルダ内に『ffmpeg.class.php』が含まれ、他に必要とするフォルダの内容を設置することができます。

今回作成の『ffmpeg_php』フォルダの最終ファイル構成

  • 『ffmpeg_php』フォルダのファイル構成
    最初にダウンロードした『ffmpeg_php.zip』をHTMLドキュメントルートに設置してあることを確認して、これからのインストール動作確認と、新たな『FFmpeg PHPclass』ラッパーモジュールのダウンロード・設置・動作確認の最終的なファイル構成内容です。
    『ffmpeg_php』フォルダのファイル構成
  • テスト用ビデオデータのダウンロードと設置
  • 『mv』フォルダのダウンロードと設置
    『mv.zip』のダウンロード(11MB)
    (注)ダウンロード後に解凍して『C:\WEBserver\htdocs fmpeg_php\』(ffmpeg_phpフォルダ内)に設置して下さい。
  • 『test_movie.m2ts』ファイルのダウンロードと設置
    『test_movie.zip』のダウンロード(38MB)
    (注)ダウンロード後に解凍して『C:\WEBserver\htdocs fmpeg_php\mv\』(mvフォルダ内)に設置して下さい。
  • 『BigBuckBunny_320x180.mp4』ファイルのダウンロードと設置
    『BigBuckBunny_320x180.mp4』のダウンロード(61.7MB:「BigBuckBunny_320x180.mp4」は、PHPVideoToolkitサイトからダウンロードします)
    (注)ダウンロード後に『C:\WEBserver\htdocs fmpeg_php\mv\』(mvフォルダ内)に設置して下さい。

『FFmpeg-PHP Class』のPHPプログラムによる動作確認

  • 『ffmpeg.class.php』ライブラリの動作確認
    『ffmpeg.class.php』ライブラリの利用方法と動作確認をするために、3種類のPHPテストプログラムがあります。「ffmpegphp_lib」フォルダに設置してある『ffmpeg.class.php』を読み込む方法(require_once構文)で利用します。
  • プログラミングの概要
    FFmpeg」クラスのオブジェクトを作成(new演算子)し、「input()」メソッドで入力ファイルを読み込み、「output()」メソッドで出力フォーマット、「ready()」メソッドで実行などのプログラミングで動画の各種コーディックからサイズ変換・フォーマット変換出力などが可能になります。
  • 『ffmpegphp_ex01.php~ffmpegphp_ex03.php』ファイルのダウンロードと設置
    『ffmpegPHPclass_program.zip』のダウンロード(2KB)
    (注)ダウンロード後に解凍して『C:\WEBserver\htdocs fmpeg_php\』(ffmpeg_phpフォルダ内)に設置して下さい。
  • 「ffmpegphp_ex01.php」プログラム説明と確認
    『mpeg』形式を『flv』と『mp4』形式のビデオに変換出力するプログラムです。作成した『cat.flv』と『cat.mp4』が表示できるか確認してください。
    「ffmpegphp_ex01.php」プログラム
  • 「ffmpegphp_ex02.php」プログラム説明と確認
    「inout_frame」フォルダにある複数の画像から、「640x360」サイズの『MP4』形式ビデオに変換出力するプログラムです。作成した『image2video.mp4』が表示できるか確認してください
    「ffmpegphp_ex02.php」プログラム
  • 「ffmpegphp_ex03.php」プログラム説明と確認
    ビデオカメラなどで撮影した「m2ts」の「1920x1080」ビデオを「960x540」サイズにして、『MP4』形式に変換出力するするプログラムです。作成した『test_movie.mp4』が表示できるか確認してください
    「ffmpegphp_ex03.php」プログラム

『phpvideotoolkit-v2』のダウンロードと設置

  1. 『phpvideotoolkit-v2』のダウンロード先は、
    「FFmpegのPHPclassラッパー」で利用する『phpvideotoolkit-v2』は、『FFmpeg-PHP Class』では実現していないような「エンコードとデコードの編集・変換」「ビデオ・コーディックとオーディオ・コーディックの編集・変換」「フレーム画像の編集・出力」「アニメーションGIF出力」などの機能を実現するものです。コマンドプロンプト・ツール機能と連携をとるための構成を設定(my_config.phpなどで記述)する必要があります。「GitHub」にある『FFmpeg』関連の中から「https://github.com/buggedcom/phpvideotoolkit-v2」より、「Download ZIP」ボタンをクリックしてダウンロードします。
    ダウンロードのサイトには、PHPのプログラミングサンプルが掲示されていますので利用方法と機能を確認できます。
    『phpvideotoolkit-v2』のダウンロード先
  2. ダウンロードした『phpvideotoolkit-v2-master.zip』を解凍して、『src』フォルダと「autoloader.php」をPHP classライブラリーとして利用しますので、WEBサーバのドキュメントルートにある『ffmpeg_php』フォルダ内に『phpvideotoolkit_v2』フォルダを作成して設置します。
  3. 以前からある『phpvideotoolkit』は、『phpvideotoolkit.php5.php』のみでPHP classライブラリーとして利用できますが、windows環境では一部ファイル出力などうまくいかない状況(version-0.1.5及び0.1.9で確認)です。そのため、2013年11月よりのVersion-2を利用します。念のため、ダウンロードサイト「http://www.buggedcom.co.uk/ffmpeg/」を明記します。
  4. 『FFmpeg』関連ツールの連携を『my_config.php』で設定する。
    phpvideotoolkit_v2』フォルダ内に「includes」フォルダを作成して、解凍した『phpvideotoolkit-v2-master』内の『examples』フォルダにある『config.php』をコピーして、『my_config.php』にリネームします。
    PHPclassラッパーで利用できるようにコマンドプロンプトの『FFmpeg』関連ツールと連携のため、絶対パスで関係づけを設定します。
    コマンドツールとの連携設定『my_config.php』プログラム
  5. autoloader.php』は、設置したフォルダの位置からの相対パスで『/src/PHPVideoToolkit/』であり、そこにあるPHPを対象に読み込む(require_onceでautoloadする)ようにしていることが確認できます。
  6. composer』を利用した構成づくりは、NG。
    「composer.json」と「composer.lock」により、『composer』プログラムを利用して設定することができる仕掛けでありながら実際は、「設定内容が古い」などのエラーメッセージが出てうまくいきません。
  7. 設定済みの『phpvideotoolkit_v2』ダウンロード
    『phpvideotoolkit-v2.zip』のダウンロード(156KB)
    (注)ダウンロード後に解凍して『C:\WEBserver\htdocs fmpeg_php\』(ffmpeg_phpフォルダ内)に設置。

『phpvideotoolkit-v2』のPHPプログラムによる動作確認

  • 『phpvideotoolkit-v2』の動作確認
    『phpvideotoolkit-v2』ライブラリの利用方法と動作確認をするために、PHPテストプログラムがあります。「phpvideotoolkit-v2」フォルダに設置してある『autoloader.php』と『my_config.php』を読み込む方法(require_once構文)で利用します。
  • プログラミングの概要
    各種機能にはそれぞれのクラスのオブジェクトがあります。「Config」「FfmpegParser」「ImageFormat_Jpeg」「Timecode」「Video」クラスなどがあり、オブジェクトを作成(new演算子)して利用します。
    Video」クラスは、「Timecode」クラスのタイムコードの範囲で、「extractSegment()」メソッドで動画のセグメント切り出し、「extractFrame()」メソッドで動画からフレームを切り出し、「save()」メソッドで出力実行などのプログラミングで動画の各種コーディックからビデオやオーディオファイルの抽出などが可能になります。
  • 『phpvideotoolkit2_ex01.php』ファイルのダウンロードと設置
    『phpvideotoolkit2_ex01.zip』のダウンロード(2KB)
    (注)ダウンロード後に解凍して『C:\WEBserver\htdocs fmpeg_php\』(ffmpeg_phpフォルダ内)に設置。
  • 「phpvideotoolkit2_ex01.php」プログラム説明と確認
    「FFmpegのバージョン情報」、「ビデオデータの情報表示」、「動画のBigBuckBunny_320x180.mp4からフレーム画像を抽出して表示」するプログラムです。
    「phpvideotoolkit2_ex01.php」プログラム

『html5-video-php』のダウンロードと設置

『html5-video-php』は、ダウンロード後、インストールするためには『composer』を利用する必要があります。
『composer』のインストールと『html5-video-php』のダウンロードと設置』を参照して下さい。

WEB開発環境の補足説明

WEB開発環境のリンク

コマンド・リファレンスAPI

参考資料の表示

pagetopへ