More Related Content
Similar to ライブストリーミングの基礎知識その2
Similar to ライブストリーミングの基礎知識その2 (20)
ライブストリーミングの基礎知識その2
- 3. ビデオフォーマット
コーデック
• 圧縮方法
• WMV9・H.264・VP6・VP8・Theoraなどなど
• WMA・AAC・MP3・Vorbisなどなど
コンテナ
• ファイル構造
• ASF・MP4・FLV・Ogg・MKVなどなど
3
- 7. ファイルフォーマット
サイズ 9 4 11+ 4 ... 11+ 4
内容 ファイル 0 FLVタグ 前のタグ ... FLVタグ 前のタグ
ヘッダ のサイズ のサイズ
• 全体的にビッグエンディアン
• 1つのFLVタグに映像・音声・メタデータのいずれかが入る
• 基本的にFLVタグが並んでるだけなので簡単
7
- 8. ファイルヘッダ領域
バイト位置 1 2 3 4 5 6 7 8 9
内容 'F' 'L' 'V' バージョン タイプフラグ データ開始位置
(0x01) (0x09)
ファイル先頭にあるファイルヘッダ
タイプフラグで映像・音声が入っているかどうかを判別
• 音声が入ってたら下から3ビット目が1 (0x04)
• 映像が入ってたら下から1ビット目が1 (0x01)
• 映像・音声は各1ストリームずつだけ入れられる
• 副音声とかはできない
8
- 9. FLVタグ
位置 1 2 3 4 5 6 7 8 9 10 11 ...
内容 データ データ タイムスタンプ タイムスタンプ ストリームID データ
種別 サイズ 拡張分 (0)
実際のデータが入る単位
データ種別によって内容がかわる
• 音声 = 0x08
• 映像 = 0x09
• スクリプト = 0x12 = 18
タイムスタンプ
• ファイル先頭からのミリ秒単位のタイムスタンプ
• 24ビットで溢れたら拡張分のところに上位8ビットが入る
9
- 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. 映像データ
位置 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. スクリプトデータ
位置 1 ...
内容 メソッド名(文字列) 引数(配列かオブジェクト)
FLVの特徴的なところ
ActionScriptのメソッド呼び出しデータが入る
• ビデオにプレイヤー固有のデータを埋め込める
各文字列やオブジェクトデータはAMF0で格納される
• FLVの仕様書に全部書いてあるので気にしなくてよい
タイトル・作者・ビットレート等のメタデータもスクリプトタグで入る
• メソッド名 = onMetaData
• 引数 = ECMAArray(プロパティの配列)
その他プレイヤーに固有の命令も埋め込める(はず)
12
- 16. FLV配信は難しい その2
エンコーダ・ストリーミングサーバの問題
× Flash Media Live Encoder
• ストリーミングはFlash Media ServerへのPushのみ
• FLVはファイルへの保存のみ
△ ffserver
• 設定が難しい
• Windowsではバイナリがない
△ VLC
• H.264使えばいけそうだが重すぎる
△ ffmpeg + 独自ストリーミングサーバ
• 設定さえできれば使えそう
• GUI作るのがめんどい
16
- 17. FLV配信は難しい その3
プレイヤーの問題
Windows Media Playerなどでは標準で再生できない
• ffdshow的な別なコーデックパックが必要
• 入れてもらえるか?
Flashベースのプレイヤー
• PeerCastのHTML内に設置しないと見れない
• すごいめんどい
AIRベースのプレイヤー
• あれば見れると思う
• あればな
• やっぱりインストールの問題はある
17
- 18. FLV配信の利点
何かいいことあるのか?
H.264が使える
• x264は品質重視のようで重すぎる
• HWエンコーダを使いたい
VP6が使える
• ffmpegで使った感じでは綺麗でも軽くもない……
Flash Screen Video 2が使える
• プログラミング配信にいい感じ
スクリプトタグが使える
• プレイヤー・エンコーダが一括で作れれば面白いことができそう
RTMPからの変換が簡単
18
- 21. 参考文献
FLV and F4V File Format Specification (Version 10.1)
• http://www.adobe.com/devnet/f4v.html
SWF File Format Specification (version 19)
• http://www.adobe.com/devnet/swf.html
Real-Time Messaging Protocol (RTMP) specification
• http://www.adobe.com/devnet/rtmp.html
21