動画をストリーム配信するためのツール・サービス - モーグルとカバとパウダーの日記 の関係で、Red5用にフラッシュ動画をエンコードする方法を調べた。
最初、Windows 上で
Free Video to Flash Converter 1.1 - Convert video files to Flash Video (FLV, SWF), AVI to FLV, AVI to YouTube FLV converter - Jacek Pazera
http://www.pazera-software.com/products/video-to-flash-converter/
を使ってフラッシュ動画(flv)を作って置いてみたのだけど、うまく表示されなかった。
内部でffmpeg使ってflvを作っているようなのだが、パラメータの与え方がRed5のストリーミングには適してない?のかもしれない。
Red5のExamples and Tutorialsに、アップロード時にffmpeg利用してflv化するサンプルがあったので、そちらを参考にしてみた。
FFMpeg with Red5
ffmpeg呼び出してエンコードしている部分のソースを見ると、こんな感じでいけるみたい。
ffmpeg -i input.mpg - acodec mp3 -ab 128 -f flv -s 320x240 -ar 44100 -aspect 4:3 -pass 1 -b 400 -r 15 -y output.flv -vstats
ちなみに「input.mpg」が元の動画ファイルで「output.flv」がフラッシュ動画化したファイル名。
エンコードは、Red5を動かしているサーバ上で行うようにしたいので、Ubuntu 8.04(Hardy)上でffmpegを動く環境にする必要があった。
ffmpeg自体はaptやSynapticで入れることができるのだが、特許の関係で、それで入れることができるffmpegはエンコーダがほとんど入っていないため、今回の用途には使えなかった。
調べてみると、Medibuntu :: Multimedia, Entertainment & Distractions In Ubuntuで配布されているものは、エンコーダが入ったものになっているとのこと。
HardyでDVDを再生する - kayakaya日記(2008-05-06)
を参考にして、Medibuntuのffmpegをインストールする。
コンソールから下記コマンドを実行する。
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list
wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
これでMedibuntuのリポジトリが追加されるので、aptなりSynapticなりでffmpegをインストールすればよい。
その後、先のffmpegのコマンドでエンコードし「/usr/lib/red5/webapps/oflaDemo/streams/」の下にコピーしてやると、Red5のフラッシュ動画デモ(http://localhost:5080/demos/ofla_demo.html)でリストに出てきて、ストリーミング再生できるようになる。