Red5 0.9.1 + Adobe Flash Media Live Encoder 3による映像ストリーム配信

March 15, 2010 – 3:53 pm

Adobe Flash Media Live Encoder 3とRed5の組み合わせてVideo映像のストリーム配信を試してみた。4ヶ月前にも「Red5を用いたVideo映像のストリーミング配信実験」を書いたが、そのときに比べ映像の質、安定性などの点で格段に性能が向上した。

Adobe Flash Media Live Encoder 3の利用: 今回のVideo映像のストリーム配信の試みと前回との違いは、前回Flexを使ってプログラミングした「Publisher」の部分をAdobe Flash Media Live Encoder3に置き換えたところ、そしてRed5の最新版0.9.1を使用しているところだ。映像ソースとしてBSディジタルチューナを用いるなどその他の部分については、ほぼ前回と同じである。

PCの組み立て:Pentium3 からCore i5に」に書いたように、最近、私の作業用PCのCPUをCore i5に代え、大幅な性能アップを実現し、Flash Media Live Encoder 3を使用できるようになった。今回、再度、映像ストリーム配信を試みることにしたのは、この機会に、新しい構成で映像ストリーム実験を再度行うことを思い立ったということだ。

Flash Media Live Encoder 3の使用では、試行錯誤で最適なパラメータ値を求めたが、これにはかなりの時間を要した。苦労のかいあって、結果として、商用サイトに比べても遜色のない(ちょっといい過ぎかな?)性能でVideo映像のインターネット配信を実現することができた、と思っている。

今回の配信実験で用いたFlash Media Live Encoder 3の設定(パラメータ値)をまとめると以下のようになる:

     Format:                  VP6  (VP6, H.264)
           (Advanced Setting)
               Keyframe Frequency: 5 seconds
               Quality:            Avg Quality – Great Framerate
               Noise Reduction:    Average
           Detarate Window:    Medium  (Tiny, Small, Medium, Large, Huge)
               CPU Usage:          Dedicated(Very Low, Low, Average, Dedicated)

     Frame Rate:     29.97
         Image Size:     640  ×  480
         Bit Rate:       350 K bps   ( 640 × 480 )

最初のFormatについては、2種類のコーデック、VP6とH.264が、このEncoderでサポートされている。何回かのトライアルの結果、コーデックとして最終的にVP6を選択したが、これはH.264を使用して満足できる性能をひきだすには、現行の映像配信用サーバーではパワー不足であり、さらにインターネット上でのVideo映像の配信を実現するということから通信帯域を400Kbps程度に抑えたいと考えたことなどによる。逆に言えば、低スペックの計算機環境でも、VP6を利用すれば、それなりの性能を引き出すことが可能ということが分かったからだ。

サウンド関係の設定: サウンドキャプチャーもビデオキャプチャと同じDevice、Buffalo社製 PC-SDVD/U2 を用い、Flash Media Live Encoder3上でエンコーディングした。ここでは、コーデックはMP3を採用し、サウンドはモノラル、サンプリングレートは44.1 kHz,Bit Rate 56k bpsとした。

その他: Video映像の取り込みとエンコーディングを行っているPCのスペックは、CPU: Core i5-750、Memory: 2GB×2(有効メモリ:3.5GB)、OSはWindows7(32ビット)である。

また、Red5を動作させているサーバーPCのスペックは、CPU:Pentium 4(2.75GHz)、Memory:512 Mbであり、OSはCentOS5.4(32ビット)。

ユーザーがVideo 映像をブラウザ上に受信(Subscribe)するための仕組みは、「Red5を用いたVideo映像のストリーム配信実験」で説明したAction Scriptと全く同じものを用いている。

パフォーマンス: 今回のVideoストリーム配信について、その性能という点を中心に、気づいたことを箇条書きすると以下のようになる:

  • Bit Rateを350K bps(音声込みで約400K bps)という制約のもとでも、かなりのレベルで、Video映像のストリーム配信が可能になることが分かった。ユーザー側から見て、かなり良質の映像をブラウザ(Flash)上に実現できる。
  • 受信映像の質については、ニュースなど平均的なTV映像については、申し分ない映像を得ることができるが、サッカーなど動きの激しいスポーツ番組では、受信映像に乱れが生じてしまう。このあたりの改善は、今後の課題だろう。
  • こうした受信映像の乱れを解決し、受信映像の質を良くするためにはBitRateを上げるなどの措置が必要と考えられるが、これには映像配信用サーバーをより高スペックにするなどが必要(高性能CPUの使用、メモリの増加など)と考えられる。
  • 今回の構成では、音声受信時にかなりの頻度で、ピッ、ポッといった一種の「破裂音」が発生するという現象が生じている。長時間、視聴しようとすると、この「破裂音」はかなり気障りなものであり、原因を明らかにし、なんらかの対策をとらなければならない。

以上、今回トライしてみたVideo映像のインターネット上のストリーム配信について、簡単にメモしておいたが、ユーザー側から映像ソースであるTVチャンネルを変更する仕組みなどを整えれば、実用的なVideo 映像配信用システムが構築できるかもしれない。今後、いろいろ検討してみることにしよう。

なんともまとまりの無いまとめになってしまった。技術レポートとしては、落第点だな。