PHPで動画形式の各種変換が行えるffmpegのラッパークラスライブラリ「ffmpeg」
2007年03月27日-
スポンサード リンク
PHP Classes - Class: ffmpeg
This class is a wrapper around the ffmpeg program to manipulate and convert video files.
PHPで動画形式の各種変換が行えるffmpegのラッパークラスライブラリ「ffmpeg」。
ffmpegを使えば、あらゆる動画形式のファイルの相互変換を行うことが出来ます。
例えば、Flashのビデオ形式であるflvをmpegやmp3に変換したり、WindowsMedia形式の動画をiPod用の動画形式に変換することが出来ます。
今回はそのffmpegを、PHPから簡単に扱うためのクラスライブラリを紹介。
以下がffmpegクラスを使ったサンプルプログラム
<?php
define('FFMPEG_BINARY', '/usr/local/bin/ffmpeg');
define('FFMPEG_FLVTOOLS_BINARY', '/usr/bin/flvtool2');
require_once 'ffmpeg.php';
$files_to_process = array(
'xxxxx/ffmpeg/www/example/to-be-processed/MOV00007.3gp',
'xxxxx/ffmpeg/www/example/to-be-processed/Video000.3gp'
);
$video_output_dir = 'xxxxx/ffmpeg/www/example/processed/videos/';
$bitrate = 64;
$samprate = 44100;
$ffmpeg = new ffmpeg();
$ffmpeg->on_error_die = FALSE;
foreach($files_to_process as $file)
{
$filename = basename($file);
$filename_minus_ext = substr($filename, 0, strrpos($filename, '.'));
$ok = $ffmpeg->setInputFile($input_dir.$file);
if(!$ok)
{
echo $ffmpeg->getLastError()."<br />rn";
$ffmpeg->reset();
continue;
}
$ffmpeg->setVideoOutputDimensions(320, 240);
$ffmpeg->setFormatToFLV($samprate, $bitrate);
$ok = $ffmpeg->setOutput($video_output_dir, $filename_minus_ext.'.flv', TRUE);
if(!$ok)
{
echo $ffmpeg->getLastError()."<br />rn";
$ffmpeg->reset();
continue;
}
$result = $ffmpeg->execute(TRUE);
if(!$result)
{
echo $ffmpeg->getLastError()."<br />rn";
$ffmpeg->reset();
continue;
}
echo 'Video converted... <b>'.array_shift($ffmpeg->getLastOutput()).'</b><br />'."rn";
$ffmpeg->reset();
}
?>
次の流れで、変換が行え、ソースコードも比較的分かりやすいですね。
ffmpeg::setInputFile - 入力ファイルを設定
ffmpeg::setFormatToFLV - フォーマットをFLVに指定
ffmpeg::setOutput - 出力の設定
ffmpeg::execute - 変換の実行
最初はとっつきにくいかもしれませんが、クラスの形式なので慣れると結構使いやすそうです。
尚、本クラスはffmpegというバイナリプログラムをexecで単に呼び出しているにすぎないので、別途ffmpeg本体もインストールの必要があります。
関連エントリ
スポンサード リンク
Advertisements
SITE PROFILE
最新のブログ記事(新着順)
- スムーズに横スクロールするレイアウトサンプル
- 斬新なページメニューが作れる「Inline Menu Layout with Gallery Panel」
- 世界中で今何時を計算できる「Spacetime」
- シンプルなタブUIを実現できる「Skeletabs」
- テキストを省略してブロックを小さくできる「Cuttr.js」
- インタラクティブに動く立体的なテキストを生成「ztext.js」
- WebGLを使った動画の切り替えアニメーション実装
- スクロールにあわせて動くイメージタイル実装
- 1000以上の汎用アイコンセット「emblemicons」
- フリーのSVG背景イメージが入手できる「BGJar」
- 過去のエントリ