flvtool2のインストール
FFMPEG-PHP Class内でflvファイルへの動画変換時にメタデータを付与するツールflvtool2を使用していますので以下のコマンドでインストールします。
Linuxの場合
# 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でデフォルトで設定されているパスにインストールされますので修正の必要はありません。
/**
* 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エンコーダーの定義を次のように変更します。
const FORMAT_MP3 = 'mp3';
const FORMAT_MP3 = 'libmp3lame';
adapters/videoto.php内のFLVメソッドで指定されている一時的にファイルを出力するパスの後ろに「/」がついておらず、環境によってはうまく動作しませんので、次のように「/」をつけます。
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,
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,
