「きゃぷら~えぼりゅーしょん」は「きゃぷら~」の抱えている問題点のうちのひとつ"画像の鮮明化"に
スポットを当ててアップグレードしようという目的でスタートしました。
「きゃぷら~」を構築してから、友人のみ~あでぃっち氏より1通のメールを頂きました。
内容は、「最近のFlash(フラッシュ)はすごいらしいぞ~」というものでした。
Flashといえばごく普通にWeb画面に出てくるものとしか思っていませんでしたが、いろいろ調べていくうちに
Flash Video(拡張子がflvのもの)なるものが存在するということがわかりました。
(今までは、Flashといえば拡張子がswfのものだと思っていました。)
Flash Videoがどんなものであるかは、http://www.youtube.com/ を見ると様々なVideoが公開されていますので
一度見て見るといいと思います。
Flashの利点?はたくさんあると思うのですが、私が気になったのは3点です。
・絵が結構滑らかなのでは???
・SWFの内部でスクリプトを記述することが可能
・メディアプレーヤをサポートしていないOSでも絵を見ることが可能(LinuxやMACでも♪)
(もちろん、Flashプレーヤーはダウンロードしておかないといけませんが、ない場合は自動的にダウンロードが開始されます。)
で、なんとか「きゃぷら~」に応用出来ないかなと思い始めました。
############################
#ストリーミングの実験の前に#
############################
ストリーミングを始める前の実験として、flvのファイルをサーバーに設置して、他のPCから再生出来るかどうかテストしてみる
ことにしました。
1.flvとswfファイルの取得
とりあえずflvファイルを自分のパソコンにダウンロードしてみようと思い、いろいろ検索して試した結果ダウンロードには
成功したのですが、ブラウザに突っ込んでも再生出来ませんでした。
なぜなんだ~と悩みつつ、更に色々調べたところflvファイル単体では再生は出来ないことがわかりました。
具体的にいうと、swfというファイルがあってこいつがコントローラ的な役割を果たしていてflvを呼び出しているということでした。
次にflvファイルを呼び出していそうなswfファイルを探してみることにしました。
かなり苦労しましたがいろいろ検索していたところ以下のページを見つけました。
FLV Player v3.2
http://www.videospark.com/index.php?ssp=24
2.サーバー環境でのテスト
先ほどのページでは、PHPなページの2つのサンプルページを使ってflvファイルを再生する
ためサンプルがおいてあります。(もちろんswfファイルもありますよ!)
(違いはナビの部分がJAVASCRIPTで作られているかかPHPで作られているかのようです。ページ自体がPHPで記述されれいるため
どちらにしてもPHPが導入されていないサーバーではNGですのでご注意ください。)
"Download Source Code Here"をクリックしてダウンロードしました。解凍すると2つのフォルダが出来ます。
私は、php_powered_navigation_versionというフォルダの中身を全部サーバーにアップロードしてみることにしました。
その結果が以下の図になります。
(123というものは筆者が個人的にダウンロードしたファイルを設置しているために表示されています。)
図中のビデオの名前をクリックするとめでたくビデオが再生されました♪
3.サーバー環境以外でのテスト
サンプルのページではPHPが動作しない環境では何も出来ないので、htmlのみで再生するためにはどうすればいいのかを
調査してみることにしました。(もちろん、htmlファイルとflvファイルとswfファイルが同じ場所にあることになります。)
いろいろ調査してみて試行錯誤してみたところ以下のようなテストページ(flvtest.html)を作成しました。
長いのでダウンロードしてください。
このflvtest.htmlと同じ場所にflvファイルとswfファイルを設置してみたところ、ブラウザ上でめでたくビデオが再生されました♪
4.ここまで強行軍だったのでちょっと後戻り(swfファイルの中はどうなっているの!?)
ここでふと疑問が残りました。flvファイルはビデオのファイルだからいいけど、swfファイルの中身はどうなってるんでしょう!?
これもいろいろと検索した結果、Macromedia Flash 8というアプリケーションで編集可能ということがわかりました。
(Macromedia Flash 8は、MacromediaのHPよりダウンロードして30日間使用出来ます。)
ですが、Macromedia Flash 8の使い方がまだ全然わかっていないのでswfの内容に関しては引き続き調査していく予定です。
#######################################################
#ffmpegとffserverを用いたflv形式のストリーミングの実験#
#######################################################
実験を踏まえてストリーミングに挑戦してみました。
ffserverの設定ファイルを編集します。
# vi /etc/ffserver.conf
ffserverの設定に以下を追加してください。
<Stream test1.flv>
Feed feed1.ffm
Format flv
#AudioBitRate 32
#AudioChannels 1
#AudioSampleRate 22050
#VideoBitRate 200
#VideoFrameRate 10
VideoBitRate 500
VideoFrameRate 30
VideoSize 320x240
##VideoSize 640x480
#VideoIntraOnly
VideoGopSize 30
NoAudio
VideoCodec flv
#AudioCodec mp3
</Stream>
続いてflvtest.htmlを編集します。
修正前
<param name=Flashvars value="url=http://192.168.1.10/test.flv">
修正後
<!--param name=Flashvars value="url=http://192.168.1.10/test.flv-->
続いて以下の行を追加します。(ポート番号はffserver.confで設定してあるものにして下さい。)
<param name=Flashvars value="url=http://192.168.1.10:8090/test1.flv">
念のため再起動します。
# sync;sync;sync;shutdown -r now
ブラウザで、
http://192.168.1.10/flvtest.html
にアクセスしてみてください。以下の様な映像が表示されていたら成功です!
画像表示前(flvファイル読み込み中)
画像表示後
ここで勘が鋭い方は気付くかもしれませんが、そうなんです。音が出ていません。
実は音を出そうとするとffserverは起動はするのですがすぐにエラーを吐いて死んでしまうのです。
(音を出す場合は、上記で追加したffserver.confに追加した部分を以下の様に編集してください。)
<Stream test1.flv>
Feed feed1.ffm
Format flv
AudioBitRate 32
AudioChannels 1
AudioSampleRate 22050
#VideoBitRate 200
#VideoFrameRate 10
VideoBitRate 500
VideoFrameRate 30
VideoSize 320x240
##VideoSize 640x480
#VideoIntraOnly
VideoGopSize 30
#NoAudio
VideoCodec flv
AudioCodec mp3
</Stream>
念のため実験に使っていたffmpegのバージョンも調べてみましたが、0.4.8でもちろんflvも対応していました。
(お使いのffmpegがどのフォーマットに対応しているかを調べるには、/usr/bin/local/ffmpeg --formatsと入力してください。)
そこで、ffmpegのバージョンをあげてみることにしました。
まず試してみたのは、0.4.9-pre1というものでした。しかし、音が出るどころかより不安定になってしまいました。
次に、CVSバージョンをインストールしてみました。そうすると音は出るのですがしばらくすると映像が
止まってしまうようになってしまいました。かなりおしい感じです。
現状では、画像と音声を別々にすればとりあえず見られるのかもしれません。
中途半端な形になってしまいましたが、実験は終了しました。
残念ながら音は出ませんでしたが、映像自体の品質は大変いいものだと思いました。
ですので、引き続き調査を行い続きをご報告出来ればと考えています。
(last update 2006/04/20 監修 段.店裏)