Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

20,159 views

Published on

  • Sex in your area is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. ライブストリーミングの基礎知識その2あれくま
  2. 2. おさらい前回のおさらい • ビデオフォーマットの話 • ストリーミングプロトコルの話 2
  3. 3. ビデオフォーマットコーデック • 圧縮方法 • WMV9・H.264・VP6・VP8・Theoraなどなど • WMA・AAC・MP3・Vorbisなどなどコンテナ • ファイル構造 • ASF・MP4・FLV・Ogg・MKVなどなど 3
  4. 4. プロトコルHTTPプログレッシブダウンロード • ダウンロードしたところまで再生 • 簡単だけど • 機能少なめストリーミング用プロトコル • RTP・RTSP • MMS・MMSH • RTMP・RTMPH・RTMFP • HTTP Live Streaming • PCP 4
  5. 5. FLV解説編どうしてこうなった
  6. 6. FLVとは• Flashで使われるコンテナフォーマット• シンプルでストリーミングもしやすい• 仕様書は http://www.adobe.com/devnet/f4v.html • F4Vの仕様書だけど後ろの方におまけでFLVも書いてある• RTMPでストリーミングするときのパケットと(ほぼ)同じ 6
  7. 7. ファイルフォーマットサイズ 9 4 11+ 4 ... 11+ 4内容 ファイル 0 FLVタグ 前のタグ ... FLVタグ 前のタグ ヘッダ のサイズ のサイズ• 全体的にビッグエンディアン• 1つのFLVタグに映像・音声・メタデータのいずれかが入る• 基本的にFLVタグが並んでるだけなので簡単 7
  8. 8. ファイルヘッダ領域 バイト位置 1 2 3 4 5 6 7 8 9 内容 F L V バージョン タイプフラグ データ開始位置 (0x01) (0x09)ファイル先頭にあるファイルヘッダタイプフラグで映像・音声が入っているかどうかを判別 • 音声が入ってたら下から3ビット目が1 (0x04) • 映像が入ってたら下から1ビット目が1 (0x01) • 映像・音声は各1ストリームずつだけ入れられる • 副音声とかはできない 8
  9. 9. FLVタグ位置 1 2 3 4 5 6 7 8 9 10 11 ...内容 データ データ タイムスタンプ タイムスタンプ ストリームID データ 種別 サイズ 拡張分 (0)実際のデータが入る単位データ種別によって内容がかわる • 音声 = 0x08 • 映像 = 0x09 • スクリプト = 0x12 = 18タイムスタンプ • ファイル先頭からのミリ秒単位のタイムスタンプ • 24ビットで溢れたら拡張分のところに上位8ビットが入る 9
  10. 10. 音声データ 位置 1 ... ... 内容 フォーマット情報 (追加フォーマット情報) 実データフォーマット情報 # コーデック • コーデック番号・サンプリング周波数・ビット数・ 0 PCM(BE) チャンネル数なんかが入ってる 1 ADPCM • さらに詳しくは仕様書参照 2 MP3 • コーデック番号は右表の感じ 3 PCM(LE)AACのみ追加フォーマット情報がつく 4 Asao 16kHz mono実データの内容はswfの仕様書が詳しい 5 Asao 8kHz mono 6 Asao 10 AAC 11 Speex 10
  11. 11. 映像データ 位置 1 ... ... 内容 フォーマット情報 (追加フォーマット情報) 実データ音声とだいたい同じ # コーデックフォーマット情報 2 Sorenson H.263 • コーデックIDの他にフレーム情報も入ってる 3 Screen video • キーフレームだとか中間フレームだとか 4 On2 VP6 • 使えるコーデックは右表の感じ 5 VP6+αチャンネル実データの内容はやっぱりswfの仕様書が詳しい 6 Screen video 2 7 AVC (H.264) • Screen videoコーデックの内容もそこに 11
  12. 12. スクリプトデータ 位置 1 ... 内容 メソッド名(文字列) 引数(配列かオブジェクト)FLVの特徴的なところActionScriptのメソッド呼び出しデータが入る • ビデオにプレイヤー固有のデータを埋め込める各文字列やオブジェクトデータはAMF0で格納される • FLVの仕様書に全部書いてあるので気にしなくてよいタイトル・作者・ビットレート等のメタデータもスクリプトタグで入る • メソッド名 = onMetaData • 引数 = ECMAArray(プロパティの配列)その他プレイヤーに固有の命令も埋め込める(はず) 12
  13. 13. FLVとストリーミングストリーミングしやすいフォーマット階層のないベタ書き • 前もってデータ長がわからなくても書き出せる • どんどんファイルが伸ばせるのでライブストリーミングも可能タグ単位で独立している • 一部のデータが壊れても途中から問題なく再生できる • ファイルヘッダは必要だけど小さい同期が取りやすい • 途中でデータ落ちや化けが発生しても次のタグを探すのが楽 • 定期的にタグヘッダが出現する • タグのあとにはタグのサイズがくる 13
  14. 14. おまけPEERCASTで配信するには?ここからが本題
  15. 15. FLV配信は難しいPeerCastStationでは対応 • 1.2.0現在、メタデータは取れてない • これ書いてるうちに対応させた • 視聴側 • PeerCastStation • パッチ当てたPeerCastIM • YP上ではUNKNOWN扱いになる • パッチ当てたPeerCast使ったYPならFLV配信側はなんとかなるけど視聴側も対応必要なのはむずかしい 15
  16. 16. FLV配信は難しい その2エンコーダ・ストリーミングサーバの問題× Flash Media Live Encoder • ストリーミングはFlash Media ServerへのPushのみ • FLVはファイルへの保存のみ△ ffserver • 設定が難しい • Windowsではバイナリがない△ VLC • H.264使えばいけそうだが重すぎる△ ffmpeg + 独自ストリーミングサーバ • 設定さえできれば使えそう • GUI作るのがめんどい 16
  17. 17. FLV配信は難しい その3プレイヤーの問題Windows Media Playerなどでは標準で再生できない • ffdshow的な別なコーデックパックが必要 • 入れてもらえるか?Flashベースのプレイヤー • PeerCastのHTML内に設置しないと見れない • すごいめんどいAIRベースのプレイヤー • あれば見れると思う • あればな • やっぱりインストールの問題はある 17
  18. 18. FLV配信の利点何かいいことあるのか?H.264が使える • x264は品質重視のようで重すぎる • HWエンコーダを使いたいVP6が使える • ffmpegで使った感じでは綺麗でも軽くもない……Flash Screen Video 2が使える • プログラミング配信にいい感じスクリプトタグが使える • プレイヤー・エンコーダが一括で作れれば面白いことができそうRTMPからの変換が簡単 18
  19. 19. RTMP→FLVサーバRTMPストリーミングからFLVへの変換が比較的簡単 • RTMPのメッセージとFLVタグの構造がほぼ同じ • Muxがとても簡単RTMPで受信→FLVで配信するストリーミングサーバが作れそう • Flashから配信とかできる • 市販のUstreamとかに配信できるエンコーダ・カメラ等が使えるか も 19
  20. 20. まとめFLVの構造は簡単PeerCastでの配信は難しいが…… • RTMP→FLVサーバがあると夢が広がるみんなで作ろう! 20
  21. 21. 参考文献FLV and F4V File Format Specification (Version 10.1) • http://www.adobe.com/devnet/f4v.htmlSWF File Format Specification (version 19) • http://www.adobe.com/devnet/swf.htmlReal-Time Messaging Protocol (RTMP) specification • http://www.adobe.com/devnet/rtmp.html 21

×