SlideShare a Scribd company logo
1 of 21
Download to read offline
ライブストリーミ
ングの基礎知識
その2
あれくま
おさらい
前回のおさらい
 • ビデオフォーマットの話
 • ストリーミングプロトコルの話




                    2
ビデオフォーマット
コーデック
 • 圧縮方法
 • WMV9・H.264・VP6・VP8・Theoraなどなど
 • WMA・AAC・MP3・Vorbisなどなど
コンテナ
 • ファイル構造
 • ASF・MP4・FLV・Ogg・MKVなどなど




                                   3
プロトコル
HTTPプログレッシブダウンロード
 • ダウンロードしたところまで再生
 • 簡単だけど
 • 機能少なめ
ストリーミング用プロトコル
 •   RTP・RTSP
 •   MMS・MMSH
 •   RTMP・RTMPH・RTMFP
 •   HTTP Live Streaming
 •   PCP




                           4
FLV解説編
どうしてこうなった
FLVとは
• Flashで使われるコンテナフォーマット
• シンプルでストリーミングもしやすい
• 仕様書は http://www.adobe.com/devnet/f4v.html
    • F4Vの仕様書だけど後ろの方におまけでFLVも書いてある
• RTMPでストリーミングするときのパケットと(ほぼ)同じ




                                              6
ファイルフォーマット
サイズ 9       4   11+   4     ... 11+   4
内容   ファイル   0   FLVタグ 前のタグ ... FLVタグ 前のタグ
     ヘッダ              のサイズ           のサイズ


• 全体的にビッグエンディアン
• 1つのFLVタグに映像・音声・メタデータのいずれかが入る
• 基本的にFLVタグが並んでるだけなので簡単




                                            7
ファイルヘッダ領域
 バイト位置 1     2     3   4        5     6 7   8   9
 内容      'F' 'L'   'V' バージョン    タイプフラグ データ開始位置
                       (0x01)          (0x09)

ファイル先頭にあるファイルヘッダ
タイプフラグで映像・音声が入っているかどうかを判別
 • 音声が入ってたら下から3ビット目が1 (0x04)
 • 映像が入ってたら下から1ビット目が1 (0x01)
 • 映像・音声は各1ストリームずつだけ入れられる
      • 副音声とかはできない




                                                    8
FLVタグ
位置 1      2 3 4 5      6   7   8         9   10   11   ...
内容 データ    データ   タイムスタンプ        タイムスタンプ   ストリームID       データ
   種別     サイズ                  拡張分       (0)

実際のデータが入る単位
データ種別によって内容がかわる
 • 音声 = 0x08
 • 映像 = 0x09
 • スクリプト = 0x12 = 18
タイムスタンプ
 • ファイル先頭からのミリ秒単位のタイムスタンプ
 • 24ビットで溢れたら拡張分のところに上位8ビットが入る




                                                             9
音声データ
    位置     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
映像データ
    位置     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
スクリプトデータ
     位置 1           ...
     内容 メソッド名(文字列) 引数(配列かオブジェクト)

FLVの特徴的なところ
ActionScriptのメソッド呼び出しデータが入る
 • ビデオにプレイヤー固有のデータを埋め込める
各文字列やオブジェクトデータはAMF0で格納される
 • FLVの仕様書に全部書いてあるので気にしなくてよい
タイトル・作者・ビットレート等のメタデータもスクリプトタグで入る
 • メソッド名 = onMetaData
 • 引数 = ECMAArray(プロパティの配列)
その他プレイヤーに固有の命令も埋め込める(はず)




                                   12
FLVとストリーミング
ストリーミングしやすいフォーマット
階層のないベタ書き
 • 前もってデータ長がわからなくても書き出せる
 • どんどんファイルが伸ばせるのでライブストリーミングも可能
タグ単位で独立している
 • 一部のデータが壊れても途中から問題なく再生できる
 • ファイルヘッダは必要だけど小さい
同期が取りやすい
 • 途中でデータ落ちや化けが発生しても次のタグを探すのが楽
 • 定期的にタグヘッダが出現する
 • タグのあとにはタグのサイズがくる




                                  13
おまけ
PEERCASTで
配信するには?
ここからが本題
FLV配信は難しい
PeerCastStationでは対応
 • 1.2.0現在、メタデータは取れてない
     • これ書いてるうちに対応させた
 • 視聴側
     • PeerCastStation
     • パッチ当てたPeerCastIM
 • YP上ではUNKNOWN扱いになる
     • パッチ当てたPeerCast使ったYPならFLV
配信側はなんとかなるけど視聴側も対応必要なのはむずかしい




                                  15
FLV配信は難しい その2
エンコーダ・ストリーミングサーバの問題
× Flash Media Live Encoder
 • ストリーミングはFlash Media ServerへのPushのみ
 • FLVはファイルへの保存のみ
△ ffserver
 • 設定が難しい
 • Windowsではバイナリがない
△ VLC
 • H.264使えばいけそうだが重すぎる
△ ffmpeg + 独自ストリーミングサーバ
  • 設定さえできれば使えそう
  • GUI作るのがめんどい




                                        16
FLV配信は難しい その3
プレイヤーの問題
Windows Media Playerなどでは標準で再生できない
  • ffdshow的な別なコーデックパックが必要
  • 入れてもらえるか?
Flashベースのプレイヤー
  • PeerCastのHTML内に設置しないと見れない
  • すごいめんどい
AIRベースのプレイヤー
 • あれば見れると思う
 • あればな
 • やっぱりインストールの問題はある




                                    17
FLV配信の利点
何かいいことあるのか?
H.264が使える
  • x264は品質重視のようで重すぎる
  • HWエンコーダを使いたい
VP6が使える
  • ffmpegで使った感じでは綺麗でも軽くもない……
Flash Screen Video 2が使える
 • プログラミング配信にいい感じ
スクリプトタグが使える
  • プレイヤー・エンコーダが一括で作れれば面白いことができそう
RTMPからの変換が簡単




                                    18
RTMP→FLVサーバ
RTMPストリーミングからFLVへの変換が比較的簡単
  • RTMPのメッセージとFLVタグの構造がほぼ同じ
  • Muxがとても簡単
RTMPで受信→FLVで配信するストリーミングサーバが作れそう
 • Flashから配信とかできる
 • 市販のUstreamとかに配信できるエンコーダ・カメラ等が使えるか
   も




                                       19
まとめ
FLVの構造は簡単
PeerCastでの配信は難しいが……
 • RTMP→FLVサーバがあると夢が広がる
みんなで作ろう!




                          20
参考文献
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

More Related Content

What's hot

What's hot (20)

実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
 
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
 
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start PrometeusPrometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みKeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
 
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdevApache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
 
動画配信の基礎知識
動画配信の基礎知識動画配信の基礎知識
動画配信の基礎知識
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解する
 

Viewers also liked

Viewers also liked (6)

CloudFrontで実現するセキュアコンテンツ配信と効果のトラッキング
CloudFrontで実現するセキュアコンテンツ配信と効果のトラッキングCloudFrontで実現するセキュアコンテンツ配信と効果のトラッキング
CloudFrontで実現するセキュアコンテンツ配信と効果のトラッキング
 
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
 
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざい
 
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるHTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
 
AWS Black Belt Online Seminar 2017 動画配信 on AWS
AWS Black Belt Online Seminar 2017 動画配信 on AWSAWS Black Belt Online Seminar 2017 動画配信 on AWS
AWS Black Belt Online Seminar 2017 動画配信 on AWS
 

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

ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
Kentaro Matsumae
 
動画ファイルフォーマット
動画ファイルフォーマット動画ファイルフォーマット
動画ファイルフォーマット
Ishii Tatsuya
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
normalian
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
tamtam180
 
How to make a Flash based Wii Ware
How to make a Flash based Wii WareHow to make a Flash based Wii Ware
How to make a Flash based Wii Ware
Tamotsu Machida
 

Similar to ライブストリーミングの基礎知識その2 (20)

[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
 
PHPでのSWF編集とその応用
PHPでのSWF編集とその応用PHPでのSWF編集とその応用
PHPでのSWF編集とその応用
 
日本Androidの会発表スライド androidのメディア機能の話
日本Androidの会発表スライド androidのメディア機能の話日本Androidの会発表スライド androidのメディア機能の話
日本Androidの会発表スライド androidのメディア機能の話
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
 
CBA様_全通話録音の新基準VoIP Trek
CBA様_全通話録音の新基準VoIP TrekCBA様_全通話録音の新基準VoIP Trek
CBA様_全通話録音の新基準VoIP Trek
 
動画ファイルフォーマット
動画ファイルフォーマット動画ファイルフォーマット
動画ファイルフォーマット
 
第1回 html5j TV部 勉強会 MPEG-DASH向けの動画配信。
第1回 html5j TV部 勉強会 MPEG-DASH向けの動画配信。第1回 html5j TV部 勉強会 MPEG-DASH向けの動画配信。
第1回 html5j TV部 勉強会 MPEG-DASH向けの動画配信。
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
 
AV1リアルタイムハードウェアエンコーダ
AV1リアルタイムハードウェアエンコーダAV1リアルタイムハードウェアエンコーダ
AV1リアルタイムハードウェアエンコーダ
 
Movie Format in a Nutshell 2013
Movie Format in a Nutshell 2013Movie Format in a Nutshell 2013
Movie Format in a Nutshell 2013
 
FRESH LIVEへのSRT導入
FRESH LIVEへのSRT導入FRESH LIVEへのSRT導入
FRESH LIVEへのSRT導入
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
How to make a Flash based Wii Ware
How to make a Flash based Wii WareHow to make a Flash based Wii Ware
How to make a Flash based Wii Ware
 
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版
 
メモリ技術の紹介 20170826
メモリ技術の紹介 20170826メモリ技術の紹介 20170826
メモリ技術の紹介 20170826
 
Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用
 
Azure Media Services 大全
Azure Media Services 大全Azure Media Services 大全
Azure Media Services 大全
 
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
 
LTO/オートローダー/仮想テープライブラリの基礎知識
LTO/オートローダー/仮想テープライブラリの基礎知識LTO/オートローダー/仮想テープライブラリの基礎知識
LTO/オートローダー/仮想テープライブラリの基礎知識
 

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

  • 2. おさらい 前回のおさらい • ビデオフォーマットの話 • ストリーミングプロトコルの話 2
  • 3. ビデオフォーマット コーデック • 圧縮方法 • WMV9・H.264・VP6・VP8・Theoraなどなど • WMA・AAC・MP3・Vorbisなどなど コンテナ • ファイル構造 • ASF・MP4・FLV・Ogg・MKVなどなど 3
  • 4. プロトコル HTTPプログレッシブダウンロード • ダウンロードしたところまで再生 • 簡単だけど • 機能少なめ ストリーミング用プロトコル • RTP・RTSP • MMS・MMSH • RTMP・RTMPH・RTMFP • HTTP Live Streaming • PCP 4
  • 6. FLVとは • Flashで使われるコンテナフォーマット • シンプルでストリーミングもしやすい • 仕様書は http://www.adobe.com/devnet/f4v.html • F4Vの仕様書だけど後ろの方におまけでFLVも書いてある • RTMPでストリーミングするときのパケットと(ほぼ)同じ 6
  • 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
  • 13. FLVとストリーミング ストリーミングしやすいフォーマット 階層のないベタ書き • 前もってデータ長がわからなくても書き出せる • どんどんファイルが伸ばせるのでライブストリーミングも可能 タグ単位で独立している • 一部のデータが壊れても途中から問題なく再生できる • ファイルヘッダは必要だけど小さい 同期が取りやすい • 途中でデータ落ちや化けが発生しても次のタグを探すのが楽 • 定期的にタグヘッダが出現する • タグのあとにはタグのサイズがくる 13
  • 15. FLV配信は難しい PeerCastStationでは対応 • 1.2.0現在、メタデータは取れてない • これ書いてるうちに対応させた • 視聴側 • PeerCastStation • パッチ当てたPeerCastIM • YP上ではUNKNOWN扱いになる • パッチ当てたPeerCast使ったYPならFLV 配信側はなんとかなるけど視聴側も対応必要なのはむずかしい 15
  • 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
  • 19. RTMP→FLVサーバ RTMPストリーミングからFLVへの変換が比較的簡単 • RTMPのメッセージとFLVタグの構造がほぼ同じ • Muxがとても簡単 RTMPで受信→FLVで配信するストリーミングサーバが作れそう • Flashから配信とかできる • 市販のUstreamとかに配信できるエンコーダ・カメラ等が使えるか も 19
  • 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