第64日目:【実験】FreeBSDでflv動画を作ってみよう!
|
どうも、('A`)です。
日記の更新が遅くなってしまいました。すんません。
先週は色々とサーバ障害対応をしたり、cサーバのIP変更を「朝駆け」して続けて
おこなっていたりで、ヘロヘロの状態でした。
なので、思わず昨日神社でお祓いしてもらいました。
運気が回復すると良いのですが・・・
べっかんこのロードバランサー(speedo)の自動切り離し機能がうまくいっていない
件についても調べないといけないのですが・・・ちょっと煮詰まっています。
塞ぎがちな状況からちょっと離れる意味で、第62日目の日記で少し触れていた
「Brian( ^ω^)のお手伝い」(と言っても、実質は('A`)がほとんど作業する羽目に
なりましたが・・・)の時に習得した「ムービー系ソフト」のインストール方法について
今回は解説しようかな、と思います。
解説と言ってもそんな大げさな事じゃないですが、もしこれから自宅サーバで
動画編集してみたいなあ、という人への情報提供になれば、と思っています。
実は大分前に「flvファイルをサーバ上で作れないか?」という命題を頂いて
当時('A`)はほとんどゼロの知識しかない状態でffmpegと格闘していました。
でも、どうしても必要なエンコーダーの幾つかがインストールできなくて断念した
苦い思い出があります。
で、先日の日記でも書いたとおり、ひょんな事からBrian( ^ω^)の依頼で再び
挑戦する事になりました。
今回はさらに条件があって、「mencoder/mplayerも一緒にいれてちょ」という
事でした。
どうも「ffmpegで動画編集したい」→「必要なエンコーダーを使うにはmencoderが
利用できれば良い」→「mencoderはmplayerをインストールすれば使えるみたいだ」
という事で3つのソフトを1セットで入れる必要が出てきた訳です、ハイ。。。
で、最初はPortsにあるソースからコンパイルしてインストールしようとしたのですが、
何故かエラー出まくりになりまして、、、「X11ライブラリがちゃんと入っていない」
「GUIが使えない」とか色々文句を言われまして。
GUIを使わない様にconfigureパラメータを指定する事も可能でしたが、そうすると
最後には「gmake-configでエラーになりましたー!」とトドメを刺されます。。。
('A`)思わず泣きそうになりました。
「動画編集したかったら、いっそLinux使えばいいじゃないか、フーンだっ」と
一時は超弱気モードにになりましたが、気を取り直して各方面で調べてみたらい・・・
なんとバイナリパッケージがあったんです。
知っている人は「なんだ、そんな事か」と思うかもしれませんが、FreeBSDの本家サイトで
Portsをよくよく調べると、FreeBSD 7.0-STABLE のPortsの中に以下の3つがありました。
(ftp4.frebsd.org とありますが、ここはサーバが置いてあるPIEで最も近いサイトです。)
(mencoder)
ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/multimedia/mencoder-0.99.11_2.tbz
(mplayer)
ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/multimedia/mplayer-0.99.11_5.tbz
(ffmpeg)
ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/multimedia/ffmpeg-2007.10.04_4.tbz
特にmencoderのバイナリがあるのは、とても助かりました。他の2つ(mplayer、ffmpeg)は
7.0R以前にもバイナリパッケージがあったのですが、動画編集で必要なエンコーダとして
利用したいmencoderは今までだとソースコンパイルから入れるしか方法がなかったのです。
まあ、とにかく動くかどうかやってみよう。
で、注意しなければならないのは、mencoderを入れる前にlameをインストールしておかないと
いけない点です。
lameというのはmp3エンコーダーの1つなのですが、これはmencoderインストール時に
必要になります。ところが、Portsのソースからlameをインストールした時に、途中でエラーに
なってうまくいかなかったのです。
なので、直接本家サイトからソースを取ってきて、個別にインストールする事になります。
cd /tmp
wget http://jaist.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
tar zxvf lame-3.97.tar.gz
cd lame-3.97
./configure
make
make install
rehash
ln -s /usr/local/lib/libmp3lame.so.0.0 /usr/lib/libmp3lame.so.0
|
最後のスタティックリンクの作成は、このあと実行するmencoderのインストールで
必要となります。
(ソースでインストールすると、うまく共用ライブラリにモジュールが入らないので
こういう方法で関連付けします。ちょっと小手先の対応ですが・・・)
で、lame と叩くと以下のメッセージがでます。これでOK。
LAME 32bits version 3.97 (http://www.mp3dev.org/)
usage: lame [options] [outfile]
and/or can be "-", which means stdin/stdout.
|
で、次はmencoderのインストールです。(いつものpkg_addで実行します。)
ちなみにmencoderをインストールすると、合わせてmplayerもインストールされます。
pkg_add -r ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/multimedia/mencoder-0.99.11_2.tbz
|
このインストールで以下の10個のパッケージがインストールされます。
mencoder-0.99.11_2
xvid-1.1.3,1
mplayer-skins-1.1.2_6
python25-2.5.2_2
gamin-0.1.9_2
gio-fam-backend-2.16.3_1
libogg-1.1.3,4
speex-1.2.b2,1
libvorbis-1.2.0_2,3
mplayer-0.99.11_5
|
ちなみにインストール途中で、以下のエラーメッセージが表示されると思います。
Error: FTP Unable to get ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/All/lame-3.97_1.tbz: File unavailable (e.g., file not found, no access)
これはPortsのバイナリパッケージとしてlameが提供されていないからです。
でもご安心ください。既にソースからインストールし、共用ライブラリへの登録も
済んでいれば、インストール処理は続行されます。
で、rehashした後で mencoder と叩いて以下のメッセージがでればOKです。
# mencoder
MEncoder 1.0rc2-4.2.1 (C) 2000-2007 MPlayer Team
CPU: VIA Samuel 2 (Family: 6, Model: 7, Stepping: 3)
CPUflags: Type: 6 MMX: 1 MMX2: 0 3DNow: 1 3DNow2: 0 SSE: 0 SSE2: 0
Compiled with runtime CPU detection.
No file given
Exiting... (error parsing command line)
|
同じ様に mplayer と叩いて以下のメッセージがでればOKです。
# mplayer
MPlayer 1.0rc2-4.2.1 (C) 2000-2007 MPlayer Team
CPU: VIA Samuel 2 (Family: 6, Model: 7, Stepping: 3)
CPUflags: MMX: 1 MMX2: 0 3DNow: 1 3DNow2: 0 SSE: 0 SSE2: 0
Compiled with runtime CPU detection.
Usage: mplayer [options] [url|path/]filename
|
さて、最後にffmpegをインストールします。方法はmencoderと同じpkg_addです。
|
pkg_add -r ftp://ftp4.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/multimedia/ffmpeg-2007.10.04_4.tbz
|
このインストールで以下の6個のパッケージがインストールされます。
ffmpeg-2007.10.04_4
gpac-libgpac-0.4.4,1
x264-0.0.20080409_2
libtheora-1.0.b2
liba52-0.7.4_1
faad2-2.6.1,1
|
で、rehashした後で ffmpeg と叩いて以下のメッセージがでればOKです。
# ffmpeg
FFmpeg version SVN-r10657, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --cc=cc --prefix=/usr/local --make=gmake --disable-debug --enable-memalign-hack --enable-shared --enable-pp --extra-cflags=-I/usr/local/include/vorbis -I/usr/local/include --extra-ldflags=-L/usr/local/lib -la52 --extra-libs=-pthread --enable-gpl --enable-pthreads --mandir=/usr/local/man --enable-liba52 --enable-liba52bin --disable-libfaac --enable-libfaad --enable-libfaadbin --disable-libamr-nb --disable-libamr-wb --disable-mmx --disable-libgsm --disable-libmp3lame --enable-libogg --disable-ffplay --disable-swscaler --enable-libtheora --enable-libvorbis --enable-libx264 --disable-freetype2 --disable-imlib2 --enable-vhook --disable-libxvid
libavutil version: 49.5.0
libavcodec version: 51.44.0
libavformat version: 51.14.0
built on Jun 15 2008 01:56:44, gcc: 4.2.1 20070719 [FreeBSD]
usage: ffmpeg [[infile options] -i infile]... {[outfile options] outfile}...
Hyper fast Audio and Video encoder
|
本当に動くのかなあ・・・よしっ、Windows Vistaに入っているサンプルビデオ(wmv形式)を
Flashムービー(flv形式)にffmpeg使って変換してみよう。
変換の際のパラメータについては、色々な解説サイトを検索してみたのですが、以下の
内容で指定しました。
「サンプリングレート(-ar)は44.1khz」「ビットレート(-ab)は128bit」
実行した結果は以下の通りです。
# ffmpeg -i bear.wmv -y -b 1800 -r 30 -ab 128 -ac 2 -ar 44100 kuma.flv
FFmpeg version SVN-r10657, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --cc=cc --prefix=/usr/local --make=gmake --disable-debug --enable-memalign-hack --enable-shared --enable-pp --extra-cflags=-I/usr/local/include/vorbis -I/usr/local/include --extra-ldflags=-L/usr/local/lib -la52 --extra-libs=-pthread --enable-gpl --enable-pthreads --mandir=/usr/local/man --enable-liba52 --enable-liba52bin --disable-libfaac --enable-libfaad --enable-libfaadbin --disable-libamr-nb --disable-libamr-wb --disable-mmx --disable-libgsm --disable-libmp3lame --enable-libogg --disable-ffplay --disable-swscaler --enable-libtheora --enable-libvorbis --enable-libx264 --disable-freetype2 --disable-imlib2 --enable-vhook --disable-libxvid
libavutil version: 49.5.0
libavcodec version: 51.44.0
libavformat version: 51.14.0
built on Jun 15 2008 01:56:44, gcc: 4.2.1 20070719 [FreeBSD]
Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.97 (30000/1001)
Input #0, asf, from 'bear.wmv':
Duration: 00:00:12.7, start: 5.000000, bitrate: 2532 kb/s
Stream #0.0: Audio: wmav2, 48000 Hz, stereo, 96 kb/s
Stream #0.1: Video: wmv3, yuv420p, 720x480, 1895 kb/s, 29.97 fps(r)
Output #0, flv, to 'kuma.flv':
Stream #0.0: Video: flv, yuv420p, 720x480, q=2-31, 1 kb/s, 30.00 fps(c)
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
frame= 378 fps= 43 q=31.0 Lsize= 1054kB time=12.6 bitrate= 685.5kbits/s
video:1003kB audio:0kB global headers:0kB muxing overhead 5.072165%
#
|
変換した動画はflashプレーヤーで見ることができました。
(心なしかちょっとボケて見えるけど、まあいいか・・・)
変換した動画を公開できれば良かったのですが、アップする先が無くて、今回は
断念しました。すみません。
まあ、でもこれで使い方によっては携帯動画とかも作れるんじゃないかな?
(あ、あくまで実験ですからね。実験です。。。)
で、この文章を書いている最中に久しぶりに(^_^;)さんからお声が・・・
何でも「異なるセッティング(httpd.conf)を持つApacheを同時に1台のサーバで
動かしたい」との事でした。
(ちなみに両方ともApacheは2.0.59で動かす、というもの)
技術的にはできると思うのですが、ちょっと('A`)だけだと何時になったら終わるか
判らない為、今回はroot弟(´・ω・`)が助っ人(というかメインの作業者)として
加わってこれから作りこもうとしています。
異なるバージョンのApacheを1台のサーバで動かす(例:Apache1.x系とApache2.0.xx系)
ケースは検索すると見かけますが、1台のサーバ上で同じ2.0.xx系を複数動かす方法を
紹介したサイトって見ないんですよねえ。
なので、ちょっと挑戦してみようか、と。
明日なにか報告できれば良いのですが・・・しばらくお待ちください。
それでは、また
|
|
|
|
|