配信システムの仕組み徹底解説
2016/03/19
この記事は、配信中級者以上の方向けに、配信プラットフォームがどのようなシステム構成で運営されているかを説明しています。
初心者の方には難しく、余計に混乱するだけですので、閲覧しないことをお勧めします。初心者の方向けの記事は、こちら(T.B.D)などが良いかと思います。
配信システムの基本
多くの配信サイトでは、h.264などの動画コーデックでエンコードされた動画データをRTMPというプロトコルを使って、視聴者へ配信しています。
RTMPとは
RTMPとはReal Time Messaging Protocolの略で、Photoshop等で有名なAdobe社が策定したマルチメディアデータ転送用の通信プロトコル(方式)です。
例えば、Twitchでは配信者がTwitchへゲーム配信を提供するIngest Serverと、視聴者が動画を配信してもらうDistribution Serverから構成されています(実際には動画保存やパートナー向けのビットレート変換があるため、もう一段inner serverが存在するはずです)。
配信者がO.B.S等のソフトウェアで配信設定を気にする際にはIngest Serverに対する配信設定を気にしがちですが、実際にはRTMPにより視聴者の環境まで動画は転送されていきます。あまりに高いビットレートや解像度で配信を行うと、視聴者の快適な視聴環境を損なう可能性があります。
映像圧縮と、ネットワーク
静止画の圧縮方式には、JPEGやGIF、PNGなどのフォーマットが存在します。1フレームの静止画データに対して、省略可能なピクセルデータをまとめていくことで圧縮が行われます。
一方、動画の圧縮方式というと、MPEG2やMPEG4などのフォーマットが存在します。元々、動画圧縮の始まりは、静止画圧縮された画像データを連続して並べる処から始まりました。JPEGデータを連続した動画データとして扱うMotionJPEGがそれにあたります。
その後、複数フレームで時相方向の圧縮を行う方式として、MPEG2などの動画圧縮(映像圧縮)方式が開発されました。時相方向でまとめることができるピクセルデータを省略することでデータサイズを圧縮します。
ビットレート
圧縮の比率を決定するのが、「ビットレート」です。ビットレートには、固定ビットレート(CBR)と可変ビットレート(VBR)が存在しますが、今回はゲーム配信に適したCBRのみに絞って説明していきます。
CBRはビットレートを一定の水準となるように目標として、映像圧縮を行う方式です。一般に複雑な映像表現が瞬時に切り替わる場合に高いビットレートを必要としますので、複雑な映像表現の際に許容できるビットレートを指定する必要があります。Youtubeやニコニコ動画に、ゲーム実況動画を投稿する場合には(プラットフォームが対応するビットレートの中で)できるだけビットレートを高くしておくとよいでしょう。
生配信とネットワーク帯域
生配信にはネットワーク帯域の問題が付きまといます。複雑な映像表現の際に綺麗な映像が見られるようなビットレートを選択すると、ネットワーク帯域を超えたデータ量を転送しなければならず、ぶつぶつと配信が途切れるなどの問題が発生します。
生配信の環境ではビットレートを決定する重要な要素は、視聴者の視聴環境といえるでしょう。先に説明した通り、RTMPによって転送される配信データは最終的に視聴者にそのまま転送されるからです。
今日の日本のインターネット環境では、光やADSLなどのインターネット固定回線に接続したPCやタブレット端末、WiMAX2やLTEなどのモバイル回線網に接続したタブレット端末やスマートフォンでの視聴が一般的です。2015年12月にアカマイ・テクノロジー社が発表した統計データによると、日本の9割以上のインターネット接続環境が4Mbps以上の回線速度であるそうです。
平均データですので、実際の体感速度はこれよりも劣るでしょうから、一般的な回線速度は1~3Mbpsだと考えると良さそうです。