WebRTC以前の予備知識 : コーデック
最近話題のWebRTCを勉強して会議システムとか作ろうと計画しています。ということでWebRTCのことを勉強する前に事前の予備知識であるコーデックについて軽く調べてみたのでアウトプットします。
ビデオコーデック
コーデックとは動画の圧縮規格(アルゴリズム)です。ビデオファイルはそのまま扱うには容量が大き過ぎるため、コーデックを用いて圧縮してやります。用語的にはこれを「エンコード」といい、エンコードしたファイルを再生することを「デコード」と言います。
ビデオコーデックの代表的なものとしては次のようなものがあり、WebRTCでもコーデックを用いたエンコードがされたビデオの送受信を行っていることになります。
- H.264
- Theora
- VP8
2014年5月現在、WebRTCを実装しているブラウザはFirefox、Chrome、Operaであり、これらは共通としてVP8のビデオコーデックをブラウザ標準として内蔵しています。またChromeとFirefoxはH.264にも対応しているらしいです。
現在ビデオコーデックのシェアと実績ではH.264が圧勝のようですが、兎にも角にもH.264はライセンス契約がややこしいみたいです。逆にVP8はGoogleが買収したコーデックで、フリーの方針みたいなのでオープンなWeb技術と相性が良いみたいです。
FirefoxのH.264対応
Firefox Development Highlights – H.264 & MP3 support on Windows, scoped stylesheets + more
米CiscoがH.264コーデックのオープンソース化を計画~米Mozillaも支持を表明
※2013年10月のもの。
ChromeのVP8
また音声に関してもコーデックがあります。これはmp3とかaacとかです。(適当)
映像コンテナ
動画は映像 + 音声から成り立っています。ビデオコーデックと音声コーデックを組み合わせて1つの映像ファイルとしたものを映像コンテナファイルと言います。代表的な映像ファイルのコンテナは次のようなもの。
コンテナファイル | 拡張子 | ビデオ・オーディオの組み合わせ |
---|---|---|
AVI(Audio Vieo Interface) | avi | 自由 (H.264ビデオ + AACオーディオなど) |
Flash Video | flv | 自由 (H.264ビデオ + AACオーディオなど) |
MPEG-4 | mp4、m4v | 自由 (H.264ビデオ + AACオーディオなど) |
WebM | webm | 固定 (VP8ビデオ + Vorbisオーディオ) |
各種ブラウザのHTML5の実装に伴い、WebMが標準のコンテナとなりつつあるようです。ただしWebRTCについてコンテナレベルでデータを扱っているかは分かってないです(;´□`)
WebM 関連記事
HTML5の標準を狙うGoogleの動画フォーマット「WebM」のこれまでまとめ
コーデック、映像コンテナとブラウザ
今までは動画や音声を再生するための各種コーデックはブラウザ標準の機能ではなく、Flash Playerなどのプラグインによって提供されてきました。しかしHTML5の使用策定に伴い、最近のブラウザはこれらの再生機能を標準でサポートする姿勢になっており、デコードするためのビデオ・オーディオコーデックを内蔵しています。
WebRTCはこれを用いることによって映像や音声の送受信を実現していることになります。