覚えていますか?Adobe Http Dynamic Streamingを
自己紹介• {id:|@}con_mame
• インフラ
• JetpackでMozillaで発表した事も…
• 今日、ニコニコニュース検索用IE8アクセラレータリリース
本題
Adobe Http Dynamic Streaming
Adobe Http Dynamic Streaming
• 6月18日リリース
• HTTPを使用して動画・Live配信
• コンテンツ認証対応
• ビットレート動的切替え対応
• OSMFも同時に公開
メリット• FW内のPCにもストリーミング配信
• 導入が簡単• 変換ツール付き• 動画の読み込みを待たずにシーク可能• FMSいらない
• キャッシュサーバの恩恵を受けられる
メリット• H.264およびAACでHD品質を実現
• アダプティブビットレート
• Adobe Flash Access 2によるコンテンツ保護標準のHTTP配信システムをサポート
• DVR対応のライブストリーミング
• 高度なシーク機能を備えたオンデマンドストリーミング
• マルチプラットフォームでブラウザー、デスクトップ、デバイスに配信
• LinuxおよびWindows Serverをサポート
• オープン仕様のMP4標準ファイル形式
導入方法
• Apache2.2以上
• Http Origin Module入れるだけ
導入方法
• http://www.adobe.ge/jp/products/httpdynamicstreaming/ からadobe_f4f_apache_module100_linux_x86.zip をDL
• Apacheのモジュールディレクトリにコピー
導入1. unzip adobe_f4f_apache_module100_linux_x86.zip
2. cd /adobe_f4f_apache_module100_linux_x86/adobe/f4fmodule
3. cp libF4V.so /etc/httpd/modules
4. cp libexpat.so.1 /etc/httpd/modules
5. cp mod_f4fhttp.so /etc/httpd/modules
配信ファイル置き場・conf
作成
LoadModule f4fhttp_module modules/mod_f4fhttp.so
<Location /vod> HttpStreamingEnabled true HttpStreamingContentPath "/var/www/vod"</Location>
mkdir -p /var/www/vod
動画変換
• F4V or MP4 compatible files
• FLV
動画変換• f4f 動画ファイル本体。内部はセグメントに分割されている
• f4m マニフェストファイル。この中に動画情報が格納されており、可変ビットレートやライセンス管理の情報も記述される
• f4x インデックスファイル。Playerから要求される各フラグメントファイルのf4fファイル中でのインデックスを持っている
動画変換
unzip adobe_f4fpackager100_linux_x86.zipcd adobe_f4fpackager100_linux_x86/adobe/f4fpackager
./f4fpackager --input-file 変換元動画 --output-file 書出し先ディレクトリ
f4fpackager --input-file=sample1_150kbps.f4v --bitrate=150f4fpackager --input-file=sample1_700kbps.f4v --manifest-file=sample1_150kbps.f4m --bitrate=700f4fpackager --input-file=sample1_1500kbps.f4v --manifest-file=sample1_700kbps.f4m --bitrate=1500
manifest
OSMFで再生してみる
仕組み1. Playerにはマニフェストファイルのアドレスを渡す
2. http://www.hoge.com/fuga.f4m
3. ApacheはOrigin Moduleに処理を渡して、Origin ModuleからPlayerにマニフェストファイルが返される
4. Playerはマニフェストファイル中のBootstrapセクションを参照してタイムコード(segment#/fragment#)に変換する
5. Playerが「http://www.hoge.com/media/fugaSeg1-Frag1」のようなアドレスを生成しリクエスト
6. ApacheはOrigin Moduleに処理を渡し、Origin Moduleはセグメント番号とフラグメント番号からf4fファイルのビットオフセットを算出し指定のフラグメントをPlayerに返す
• シークバーを動かした時は、シーク先の時間に対応するフラグメントが要求されるのでキャッシュサーバにキャッシュがあればOrigin Moduleに処理が渡らずキャッシュサーバ中のキャッシュを返す
ログ172.16.49.1 - - [30/Oct/2010:23:51:34 +0900] "GET /vod/trinoko/trinokocity.f4m HTTP/1.1" 200 2154 "http://172.16.49.100/OSMFPlayer.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10"
172.16.49.1 - - [31/Oct/2010:00:04:37 +0900] "GET /vod/elu/eluSeg1-Frag7 HTTP/1.1" 200 532024 "http://172.16.49.100/OSMFPlayer.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10"
172.16.49.1 - - [31/Oct/2010:00:04:43 +0900] "GET /vod/elu/eluSeg1-Frag8 HTTP/1.1" 200 190361 "http://172.16.49.100/OSMFPlayer.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10"
172.16.49.1 - - [31/Oct/2010:00:04:45 +0900] "GET /vod/elu/eluSeg1-Frag9 HTTP/1.1" 200 298743 "http://172.16.49.100/OSMFPlayer.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10"
パフォーマンス• 100クライアントでキャッシュに乗っているフラグメントにアクセス
• 1,000リクエストと10,000リクエスト
• load averageも見てみる
• 10回の平均を見る
• Apacheの設定は標準
Apache vs Varnish vs nginx1,000リクエスト*Apacheload average: 3.95Requests per second: 126.98 [#/sec] (mean)Time per request: 787.547 [ms] (mean)
*Nginxload average: 0.42Requests per second: 122.54 [#/sec] (mean)Time per request: 816.040 [ms] (mean)
*Varnishload average: 0.91Requests per second: 105.91 [#/sec] (mean)Time per request: 944.240 [ms] (mean)
Apache vs Varnish vs nginx10,000リクエスト*Apacheload average: 18.93Requests per second: 124.10 [#/sec] (mean)Time per request: 805.778 [ms] (mean)
*Nginxload average: 1.75Requests per second: 120.28 [#/sec] (mean)Time per request: 831.421 [ms] (mean)
**Varnishload average: 4.07Requests per second: 122.40 [#/sec] (mean)Time per request: 816.992 [ms] (mean)
まとめ• Apacheあれば動画ストリーミングが簡単に出来る
• FWにも強い
• ライセンス管理も出来る• Live配信でもFWを気にしなくていい
• キャッシュサーバでフラグメントをキャッシュ出来る• パフォーマンスの低下が少ない