ライブストリーミ
ングの基礎知識
あれくま
概要
普段何気なく使ってるビデオストリーミングについてもうちょっと知りま
せんか?
今回は基礎の基礎編。ほぼ用語解説です。




                                    2
概要
ビデオフォーマットについて
 • コンテナとコーデック
 • ライブストリーミングとコンテナ
ストリーミングプロトコルについて
 • HTTPプログレッシブダウンロード
  • 他のストリーミングプロトコル




                       3
自己紹介
あれくま(@arekuma)
または kumaryu
PeerCastStation (一から作り直したリメイク版PeerCast) を作ってま
す
仕事では組み込みっぽい系。ビデオストリーミングなんかとは遠いとこ
ろに居ます




                                                4
前編
ビデオフォー
マットについて
ビデオフォーマットについて
再生できるビデオはどれでしょう?
AVI, WMV, H.264, MP4, WebM, etc.
 • ごっちゃになってませんか?
知ってるようで意外と知らない




                                   6
コンテナとコーデック
ビデオを扱ううえで出てくる言葉
コンテナ(Container)とは?
 • 実際のファイルフォーマット
 • AVI・ASF(WMV)・MP4・WebM等
コーデック(Codec)とは?
 • 圧縮プログラム、または圧縮方法
 • H.264・VC-1(WMV9)・VP8等




                            7
コーデック(CODEC)
ストリーム(音声や映像データ)の圧縮・解凍プログラムのこと
圧縮方法自体のことをいうこともある
音声用や映像用、得意分野などでいろいろある
たいてい特許でガッチガチ




                                8
映像用コーデック
MotionJPEG
  • JPEG画像紙芝居方式。単純だがデータサイズがでかくなりすぎて無理があ
    る
VC-1 (WMV9)
  • 標準化されてBlu-Rayなんかでも使われる。結構きれい。MSが作ったので
    Windowsで使いやすい。当初特許フリーとして出てきたがそんなことなかった
    ぜ
H.264
  • 標準規格なので最近よく使われる。ビットレート低くても結構きれい。エンコー
    ド・デコード共に重め
VP8
  • Googleが買ってオープン化した。自称とてもすごいが実際はそこまででもない
    らしい。自称特許フリーだが実際は危なそう
Theora
  • 昔オープン化されたVP3を頑張って改良したもの。ビットレート比の画質はそ
    れほどでもないが処理は比較的軽い。特許フリーぽい。




                                             9
音声用コーデック
WMA
  • MS製なので詳しくはよくわからんが、WMVといっしょによく使われる。
AAC
 • 標準規格だが詳しくはよく知らない。H.264といっしょによく使われる
MP3
  • 一昔前はよくあったが最近はそれほどでも。昔は音質の劣化がきつ
    いと言われたがビットレートが充分高ければ問題はない
Vorbis
  • オープンで特許フリー。音質も充分でフリーなので結構よく使われて
    る
Speex
 • 人声用。ボイスチャット等で使われる




                                         10
コンテナ(CONTAINER)
複数のストリーム(映像や音声データ)をまとめて1ファイルにしたもの
副音声、マルチアングル、ビットレート違いや立体視用の右目用と左目用
など映像や音声も複数入る
物によっては字幕や3Dモデルなんかも入ったりする
ライブストリーミングではせいぜい音声と映像の各一本ずつ
コンテナにデータを入れるの(エンコする時)をMux(Multiplexing=多重
化)という
 • 対応するMuxerが必要
コンテナからデータを出すの(視聴する時)をDemuxという
 • 対応するDemuxer・Splitterが必要
コンテナは種類によって入るコーデックが決まってることが多い
 • シークをしようとするとコーデック毎に正しく対応しないと無理だったり
   するため




                                            11
コンテナの種類
AVI
   • 20年近くも前からあるシンプルなコンテナ。なんでも入れようとすれば入るがさすがに古いのでしょぼい
ASF(WMV・WMA)
   • VC-1(WMV)とかWMAを入れる。拡張子がWMVやWMAになるのでコーデックと紛らわしいが中身はASFで同じ。スト
     リーミング用とファイル用でちょっと違いがあるらしい
MP4
    • H.264とかAACがよく入ってる。QuickTimeのMOV形式が元。3GPとかF4Vもこれベース。拡張性が高いがライブスト
      リーミングには仕様上対応不可能
Matroska(MKV)
   • 結構なんでも入るコンテナ。GoogleはこれにVP8とVorbisを入れてWebMと呼んでいる。MP4に似て拡張性は高いが一
     応ライブストリーミングもできることになっている
MPEG2 TS(m2tsとか)
   • 放送用。Mpeg系のコーデックがよく入る。放送用だけあってストリーミングに強い。Windows7だとなにげに標準で開け
     る。
Ogg
      • VorbisとかTheoraが入る。ストリーミングに強い。
FLV
  • 主にFlash用。F4Vとは全くの別物。Flashで使えるコーデックが入る。ストリーミングにも使いやすい。
コンテナ無し
      • ストリーミングプロトコルによってはそもそもコンテナ使わなかったり……




                                                                        12
後編
ストリーミングプロ
トコルについて
プロトコルについて
protocol: 議定書
通信プロトコル = 通信データ内容の取り決め
送信側と受信側の両方が理解してないと通信できない




                           14
ストリーミングプロトコルにつ
いて
ストリーム(映像・音声データ)をどうやってとどけるか?
ファイルを全部ダウンロードしてから再生
 • 遅い
 • ライブで見れない
途中まで・途中からでも視聴したい




                              15
HTTPプログレッシブダウン
ロード
普通のファイルダウンロードと同じ
progressive: 段階的な
ダウンロードできたところまで再生するだけ
とても簡単
Webページ埋め込みのビデオ再生はたいていこれ
 • FlashとかHTML5のvideoタグとか




                            16
HTTPプログレッシブダウン
ロードの利点
簡単に受信できる
 • HTTPでファイルを落とすだけ
送信も既にあるサーバが使える
 • HTML公開するのと同じHTTPサーバでOK
多くのプレーヤで再生できる




                            17
HTTPプログレッシブダウン
ロードの欠点
バイト単位でしか位置指定できない
 • 時間指定でシークできない
ライブストリーミングが難しい
 • 特殊なサーバが必要
途中でストリームを切り替えるのが難しい
 • 帯域によって適切なビットレートのストリームを選択したりできない
遅延が大きくなりがち
 • TCPじゃなくてもいいのに
視聴者全員に送信する必要がある
 • ビットレート×視聴者数の上り帯域が必要




                                     18
ストリーミング用のプロトコル
プログレッシブダウンロードの問題点を解決したい
RTP・RTSP
  • ビデオ会議もできるUDPベースのプロトコル。標準化されててストリーミングではかなり一般的
  • 遅延少なめ。UDPマルチキャストも可能
MMS・MMSH
  • MS製。ASFをストリーミングする。詳しくはよくわからない。MMSHはHTTPベースぽい。
RTMP・RTMPH・RTMFP
  • Flash用。RTPに似てるが、TCPベースでFlash用のオブジェクトデータもやりとりできる
  • RTMPHはHTTPベース。RTMFPはUDP版
HTTP Live Streaming・HTTP Dynamic Streaming (IIS Smooth Streaming ?)
  • HTTPプログレッシブダウンロードの問題点のいくらかを、数秒毎に細切れのファイルにすれば
    いいじゃん!という力技で解決したもの。確かに動きはするが、ださい
PCP
  • PeerCastのプロトコル。P2Pのファイル共有プロトコルから派生したもの。プログレッシブダウン
    ロードをバケツリレーにしたような感じ
個々のプロトコルについて詳しいことは次回以降に




                                                                      19
まとめ
コンテナ = ファイル
コーデック = 圧縮方法
Demuxer・Splitterとコーデックがあると視聴できる
HTTPプログレッシブダウンロードはとても簡単
 • ストリーミングにはあまり向いてないよ
ストリーミングに特化したプロトコルがいくらかある




                                  20
おしまい
おまけ・TCP VS. UDP
TCP
  • 信頼性のある通信プロトコル。データが途中でどこかいったり順番が
    入れ替わったりすると自動でなんとかしてくれる。自動でいろいろやっ
    てくれる分レイテンシが大きくなりがち
UDP
 • 投げっぱなしのプロトコル。データが届かなかったり順番が入れ替
   わったり平気でする。気が効かないかわりにレイテンシは小さい
ビデオストリーミングの場合
  • 途中で音声や映像データはちょっとくらい飛んでも続きが普通に再生
    されていれば問題ない
  • 入れかわってもデータに時刻が入っていれば順番に再生できる
  • ライブの場合レイテンシは小さくしたい
UDPの方が有利




                                       22

ライブストリーミングの基礎知識