CodeZine(コードジン)

特集ページ一覧

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

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

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

flvtool2のインストール

 FFMPEG-PHP Class内でflvファイルへの動画変換時にメタデータを付与するツールflvtool2を使用していますので以下のコマンドでインストールします。

Linuxの場合

[リスト5]flvtool2インストール
# wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
# tar xzf flvtool2-1.0.6.tgz
# cd flvtool2-1.0.6
# ruby setup.rb config
# ruby setup.rb setup
# ruby setup.rb install

Windowsの場合

 flvtools2配布サイトより最新アーカイブflvtool2-1.0.6.zipをダウンロードし、解凍します。

 解凍してできたフォルダ内のflvtools2.exeをパスの通ったディレクトリに配置します。

ライブラリ、動画ファイルの配置

 FFMPEG-PHP Classは、プロジェクトのWebページからphpvideotoolkit0.1.5.zipをダウンロードして解凍後、phpvideotoolkit.php5.php、adapters/videoto.phpをsampleフォルダに配置します。

 またこのライブラリと一緒に配布されているサンプル動画examples/to-be-processed/MOV00007.3gp、examples/to-be-processed/cat.mpeg もサンプルフォルダに配置します。

 Zend_Http_Clientは、Zend FrameworkのページよりZend Framework 1.10 fullをダウンロードして解凍後、libraryフォルダ内のZend/Http、Zend/Uri、Zend/Validateをフォルダごと、Exceprion.php、Loader.php、Uri.phpをsampleフォルダ内に配置します。

 サンプルではApacheのDocumentRootを「/var/www/html」としていますので、実行環境に応じて読み換えてください。

 また、便宜上DocumentRoot直下に各ライブラリを配置しておりますが、実際のシステム開発ではDocumentRoot以外の場所に配置してinclude_pathを通すようにしてください。

ライブラリの修正

 phpvideotoolkit.php5.php内でffmpeg、flvtool2のパスが設定されていますのでサンプルを実行する環境に合わせて編集します。

 本記事の例に従ってインストールした場合には、ffmpeg、flvtool2共にphpvideotoolkit.php5.phpでデフォルトで設定されているパスにインストールされますので修正の必要はありません。

[リスト6]phpvideotoolkit.php5.phpの66行目以降
/**
 * Set the ffmpeg binary path
 */
if(!defined('PHPVIDEOTOOLKIT_FFMPEG_BINARY'))
{
    define('PHPVIDEOTOOLKIT_FFMPEG_BINARY', '/usr/local/bin/ffmpeg');
}
/**
 * Set the flvtool2 binary path
 */
if(!defined('PHPVIDEOTOOLKIT_FLVTOOLS_BINARY'))
{
    define('PHPVIDEOTOOLKIT_FLVTOOLS_BINARY', '/usr/bin/flvtool2');
}

 本記事ではMP3エンコーダにlameを使用していますので、phpvideotoolkit.php5.php内のMP3エンコーダーの定義を次のように変更します。

[リスト7]phpvideotoolkit.php5.phpの222行目 変更前
const FORMAT_MP3             = 'mp3';
[リスト8]phpvideotoolkit.php5.phpの222行目 変更後
const FORMAT_MP3             = 'libmp3lame';

 adapters/videoto.php内のFLVメソッドで指定されている一時的にファイルを出力するパスの後ろに「/」がついておらず、環境によってはうまく動作しませんので、次のように「/」をつけます。

[リスト9]videoto.phpの33行目(修正前)
public static function FLV($file, $options=array(), $target_extension='flv')
{
//     merge the options with the defaults
    $options = array_merge(array(
        'temp_dir'                    => '/tmp',
        'width'                        => 320,
[リスト10]videoto.phpの33行目(修正後)
public static function FLV($file, $options=array(), $target_extension='flv')
{
//     merge the options with the defaults
    $options = array_merge(array(
        'temp_dir'                    => '/tmp/',
        'width'                        => 320,

  • 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