2010年7月8日木曜日

ffmpegのオプション設定 動画変換編

映像を他形式へ変換する

MobileHackerz Knowledgebase Wiki を参考に設定してみた。

ffmpeg -i input_file -mbd 1 -g 20 -ar 44100 -y output_file
オプションの説明
  • -i <filename>  インプットファイル名を指定する
  • -mbd <mode>  マクロブロックのモードを決定 : Default = 0
  • -g <gop_size>  GOP(Group Of Picture)のサイズをフレーム数で指定する : Default = 12
  • -ar <rate>  サンプリング周波数 (in Hz)
  • -y   同名ファイルがあった場合アウトプットファイルを上書きする
  • output_file 出力ファイル(拡張子で出力形式を判断しています)
注意点
もう少しトライしてみないと分からない・・・

ffmpegのオプション設定 サムネイル画像編

映像からサムネイル画像を取り出す

MobileHackerz Knowledgebase Wiki を参考に設定してみた。

ffmpeg  -ss  5  -i  input_fil-s  140x100  -f  image2  -vframes  1  -y  output_file
オプションの説明
  • -ss <time_off>  変換開始時間をセットする(hh:mm:ss.ms 又は、s)
  • -i <filename>  インプットファイル名を指定する
  • -s <size>    フレームサイズの設定(WxHか簡略名)数値は必ず偶数で指定する、奇数の場合はエラーが出ます。
  • -f <fmt>    強制的にfmtで指定したフォーマットを適用する(画像として出力)
  • -vframes <number> 変換するビデオフレーム数
  • -y    同名ファイルがあった場合アウトプットファイルを上書きする
  • output_file    出力ファイル(拡張子で出力形式を判断しています) 
注意点
オプション [-ss]の位置は[-i]の前においた方が良いようだ。

2010年7月5日月曜日

TeamViewer5でPort80を閉じる

PCのリモートソフトとして、TeamViewer5 をつかい、2ヵ所のPCを管理している。
このソフトは、Web Serverでよく使われる Port80 をサービスとして起動しているため、ローカルでApache、AN_HTTPD 等起動できない。

早速、Googleで調べてみると・・・ありました。

TeamViewer5 で Port 80 を起動しない方法

レジストリエディタ regedit で

HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version5
GatewayAllowed
 と ListenHttp
DWORD値 1 → 0
2つの項目のDWORD値を 1 から 0 に変更すればよい。

TeamViewer5の起動後、AN_HTTPDを起動してみるとOK、勿論WAMP環境でもOKでした。

phpMyAdminをインストール時「PHP 5.2+ is required」エラー

phpMyAdminをインストールしたところ

PHP 5.2+ is required
というエラーが出たので対策方法を書いておきます。
2010.7.5現在phpのバージョンが5.1.*のようで最新のphpMyAdminに対応していなかったみたいです。

5.1に対応したバージョンを落としてインストールします。

ダウンロード先

ここからphpMyAdmin-2.11.10-all-languages.tar.gzをダウンロードしてきます。
#tar xzvf phpMyAdmin-2.11.10-all-languages.tar.gz
#mv phpMyAdmin-2.11.10-all-languages /var/www/phpmyadmin
以降はCentOSで自宅サーバーのとおりインストールします。
さあ、OKかと思ったところ下記のエラーが見える
mcrypt 拡張をロードできません。PHP の設定を確認してください。
こんな時は
#yum install php-mcrypt
でインストールします。

2010年7月3日土曜日

ffmpeg エラー ”lame: output buffer too small”

現象
ffmpegでビデオファイルを変換中に下記のようなエラーが出て、変換が途中で止まってしまう。

lame: output buffer too small
CentOS 5 の lame 3.98-2 にはバグがあるらしい。

対策
lame最新版のソースから rpm を作る。

ソースパッケージのダウンロード

# cd /usr/src/redhat/SRPMS
# wget http://apt.sw.be/redhat/el5/en/SRPMS.rpmforge/lame-3.98.2-1.rf.src.rpm
ソースパッケージの展開
# rpm -ivh lame-3.98.2-1.rf.src.rpm
最新のソースtar ballをダウンロード
# cd ../SOURCES
# wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz?use_mirror=jaist
SPECファイルの変更
# cd ../SPECS
# mv lame.spec lame.spec.org
# wget http://wiki.open-art.jp/files/lame.spec
リビルドでの依存パッケージのインストール
# yum install nasm ncurses-devel
Installed:
nasm.i386 0:0.98.39-3.2.2
ncurses-devel.i386 0:5.5-24.20060715
SPECファイルを元にリビルド
# rpmbuild -bb lame.spec
------------------------------------------------------
+ cd /usr/src/redhat/BUILD
+ cd lame-3.98.4
+ /bin/rm -rf /var/tmp/lame-3.98.4-1.rf-root
+ exit 0
バイナリパッケージのインストール
# cd ../RPMS/i386
# yum localinstall --nogpgcheck lame-3.98.4-1.rf.i386.rpm lame-devel-3.98.4-1.rf.i386.rpm
Running Transaction
Updating : lame 1/4
Updating : lame-devel 2/4
Cleanup : lame-devel 3/4
Cleanup : lame 4/4
Updated:
lame.i386 0:3.98.4-1.rf lame-devel.i386 0:3.98.4-1.rf
検証
途中でエラーが出たaviファイルを変換したところ無事にエンコ出来た。

ffmpeg-phpのインストール

動画データの管理をしやすくするために ffmpeg-php の導入を試みた。

ffmpeg-phpのインストール

$ wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.6.0.tbz2

$ tar jxvf ffmpeg-php-0.6.0.tbz2
$ cd ffmpeg-php-0.6.0
$ phpize
$ ./configure && make && make install
$ vi /etc/php.d/ffmpeg.ini
extension=ffmpeg.so #追加
$ /etc/init.d/httpd reload

$ cd
$ rm -rf ffmpeg-php-0.6.0.tbz2.2 ffmpeg-php-0.6.0
動作確認
解凍したディレクトリにtest_ffmpeg.phpというファイルとtestsというディレクトリがあるので、これを公開しているディレクトリにコピーしてtest_ffmpeg.phpを実行する
tests/mediaにある動画と音声ファイルの情報を出力します。
インストールされているバージョンを確認する場合もこのファイルを参考に出来ます。

Errors対策
・makeで”ffmpeg headers not found”エラーが出現
configure: error: ffmpeg headers not found. Make sure ffmpeg is compiled as shared libraries using the --enable-shared option
 ffmpeg-develがインストールされていないためライブラリーが読み込まれていないみたい。
$ yum --enablerepo=rpmforge install ffmpeg-devel

2010年6月20日日曜日

CentOS Server on VMware Workstation でクローン作成

現在、hiyokoが公開しているサーバーは、VMware Workstation 上で CentOS5.4 を稼動・公開しています。

CentOS を導入しているHDDは、VMware の起動時にスナップショット作成するよう設定していましたがここに来て容量が厳しくなってきたため、大きいHDDにクローン移行を試みた。

A.クローンの概要

クローンは既存の仮想マシンのコピーです。その既存の仮想マシンは、クローンの親になります。クローン処理が完了すると、クローンは独立した仮想マシンとなります。

  • クローンに行った変更は、親仮想マシンに影響を与えません。親仮想マシンに行った変更も、クローンには表示されません。
  • クローンのMACアドレスとUUID は、親仮想マシンのものとは別になります。
仮想マシンの現在の状態を保存してその状態を復元できるようにするには、スナップショットを作成します。仮想マシンのコピーを作成して個別に使用する場合は、クローンを作成します。
クローンは独立した仮想マシンですが、リンククローンの場合には仮想ディスクを親仮想マシンと共有します。

今回の目的では、リンククローンではなく、クローンを行う必要がありそうです。
また
MACアドレスが別のものになるということは、現在稼動中の CentOS は、固定アドレスを割り当てていますが、これが違うものになるということですね。したがってクローンが出来上がったら、CentOS上のコンソールでネットワークの設定をいじる必要があるということです。

B.手順

1.クローンの作成(VMware Workstation上にて)
  • VMware Workstation を起動しクローンする仮想マシンを読み込みます。
  • クローンする仮想マシンのタブを選択
  • メニュー
  • VM(M)
  • クローン作成(O)
  • ウイザード 次へ(N)
  • 「仮想マシンの現在の状態」にチェック 次へ(N)
  • 「完全クローンの作成(F)」にチェック 次へ(N)
  • 「仮想マシン名(V)」に名前を入力 「格納場所(L)」を設定し 完了
  • しばし待つ

    事前に割り当てたハードディスクは、事前に割り当てないディスクに変更されていました。
    大きくHDDを割り当てていたため、この結果には助かりました。1.2TB→300GB
2.CentOS上にて

CentOSは固定アドレスで運用しているため、netデバイスを書き換えます。
  • # system-network-config コマンドで固定アドレスの設定
  • # /etc/rc.d/init.d/network restart ネットワークを再読み込み
  • # ifconfig コマンドで確認
以上