忘却めも


phpmotion V3.5 - Rev 115

php5ビルド

ubuntu11.04の場合は、phpのGDライブラリのためソースからビルドする必要がある。

curl_init()について

インストール時にセットアップページへアクセスすると、HTTP500エラーが表示され画面が真っ白になる。
phpログを確認するとcurl_init()という関数が定義されていないために、エラーが発生したと推定される。
[04-Nov-2011 20:02:01] PHP Fatal error: Call to undefined function curl_init() in /var/www/phpmotion/setup/index.php on line 267
ビルド時にconfigureオプションを指定するらしい。helpからcurlを確認した。
./configure --help | grep curl
  --with-curl[=DIR]       Include cURL support

configureオプション

configureオプションは以下のとおり。使用したソースは、"php-5.3.5.tar.gz"
./configure  --prefix=/usr/local/php \
--with-apxs2=/usr/bin/apxs2 --with-curl \
--with-pgsql --with-mysql --with-gd --enable-mbstring \
--with-freetype-dir=/usr/local/include/freetype2
シンボリックリンクで、パスを通す。
sudo ln -s /usr/local/php/bin/php /usr/local/bin/php

phpmotionのユーザ登録で、セキュリティコードの画像が表示される。

PHPshield

setupのPHPshield確認で自分が調べた組み合わせは、以下のとおり。(2日ほどハマッた…orz)
php5.2.5とixed.5.2.linng
php5.3.5とixed.5.3.linok

.htaccess

phpmotion V3.5のRewriteは、.htaccessを用いている。その際に、".htaccess"ファイルの"RewriteBase"値が"/"(ルート)になっているため、適切に設定する。具体的には、phpmotion設置場所"/var/wwww/phpmotion"の場合、38行目の"RewriteBase"値を"/phpmotion"にする。また、documentrootに設置する場合は不要。
 35 # EXAMPLE => RewriteBase /your sub-directory name
 36 # EXAMPLE => RewriteBase /videos
 37
 38 RewriteBase /     ←デフォルトで"/"になっている

アップロード

動画をアップロードするとpmファイルのダウンロードが開始される。おそらく、AddHandlerの設定し忘れで "/etc/apache2/mods-enabled/mime.conf"ファイルに、下記を記述してapache再起動する。
AddHandler cgi-script .cgi .pl .pm

気になったこと

  • エンコード処理で、アップロードしたwmv,avi,mpgファイルは、ffmpegでデフォルト設定(ロスレスに近い)でエンコードし、flvとその他(mp4など)は、mencoderを使いビデオコーデックFlash Video (FLV)へエンコードしている。個人的には、mp4(h264/AAC)の場合は、ffmpegでflv(h264/aac)エンコードするように、書き換えたほうがいいかも。
エンコード処理は、"/phpmotion/convertor.php"ファイルに記述されている。そこで、"//flv videos"と"//all other videos"の間にmp4ファイルを処理するcase文を追加した。
                //flv videos
                case 'flv':
                $flv = true;
            break;

                //add 2011-11-05
                //mp4
                case 'mp4':
                $cmd = "$config[path_to_ffmpeg] -i $raw_video_path -vcodec libx264 -b 680k  -s 1024x576 -g 240 -aspect 1.7777 -acodec libfaac -ac 2 -ar 48000 -ab 64k -f flv -vpre fast -threads 2 $new_flv";
            break;

                //all other videos
mp4からflvで再エンコードが不要な場合は、$cmd = "$config[path_to_ffmpeg] -i $raw_video_path -vcodec copy -acodec copy -f flv $new_flv"; で十分かも。
  • アップロード時に、動画のタイトルを記述するのが面倒。ClipBucket のように自動でファイル名がタイトルになる方が良いと思う。
  • サムネイル画像取得は、flvtool2で動画の長さを出力し割る2をした(中間の画像)、"xxxxsec"を、"hh:mm:ss"形式に変換して、サムネイル取得する時間の位置をffmpegに渡している。ここで、特定の動画に対して、flvtool2のエラーにより取得が失敗して、サムネイル取得する時間の位置が"00:00:00"になる。原因は調査中。たぶんバージョンの入れ替えで改善すると思う。
flvtool++ をいれた。必要なパッケージは、"scons","libboost*-dev"。ソースは、"flvtool++-1.2.1.tar.gz"を使った。
$ sudo apt-get install scons libboost*-dev
$ scons
$ sudo cp ./flvtool++ /usr/local/bin/
"/phpmotion/convertor.php"ファイルのサムネイル取得部分を修正する。
//______________________________________________________________________________________________
//_____________________________FLVTOOL2 - (Meta Data Injection)_________________________________

$cmd = "$config[path_to_flvtool2] -UP $new_flv | grep duration";
↓修正
$cmd = "/usr/local/bin/flvtool++  $new_flv | grep duration";

カウンタ

カウンター

管理人/副管理人のみ編集できます