パケットからみる SmoothStreaming
~ WindowsServer2008 で次世代の動画配信~
株式会社 Dooga 西村 誠
これまでの動画配信
300kbps 500kbps 1000kbps 2000kbps ユーザーが 自分の帯域幅にあった 映像を 選択
これまでの動画配信
自分の帯域幅?
これまでの動画配信
ユーザーに選択??
これまでの動画配信
・帯域幅は変動する
・帯域幅はサーバー側の影響も受ける ・帯域幅は動画閲覧中も変わっていく ユーザーは自分の帯域幅が どの動画サイズに合っているか 判断することができない!!
これまでの動画配信
これってクールじゃないですよ ね・・・
SmoothStreaming!!
閲覧中に動画の配信レート を ユーザーの “その時の帯域幅 ” に合わせて配信可能
SmoothStreaming!!
・ユーザーの帯域幅に適した 動画配信が可能 ・瞬間的にビットレートを変えるこ とで シーク時間を短縮できることがで きる !!
SmoothStreaming!!
クールです ね !!
パケットから仕組みを眺める
サンプルコードが 見当たらなかったので パケットを眺めてみました
パケットから仕組みを眺める
クライアント側: Silverlight ↓ WireShark ↓ サーバー側: WindowsServer2008+IIS
ネットワークを流れるデータを見ることが る クールなフリーウェア !!
パケットから仕組みを眺める
・通信は純粋に HTTP と同様の 80 番ポートのみ ( HTTP のポートを変えてみる と、 配信もそれに合わせて変更されま した)
パケットから仕組みを眺める
・帯域制御はクライアント側から GET
47:45:54:20:2f:62:62:62:2f:42:69:67:25:32:30:42:75:63:6b:25:32:30:42:75:6e:6e :79:2e:69:73:6d:2f:51:75:61:6c:69:74:79:4c:65:76:65:6c:73:28:33:30:30:30:30:3 0:29:2f:46:72:61:67:6d:65:6e:74:73:28:76:69:64:65:6f:3d:30:29:3f:70:61:63:6b:6 5:74:70:61:69:72:3d:36:33:33:38:33:37:30:30:38:31:30:30:35:36:33:38:37:35:20 :48:54:54:50:2f:31:2e:31:0d:0a:41:63:63:65:70:74:3a:20:2a:2f:2a:0d:0a:41:63:6 3:65:70:74:2d:45:6e:63:6f:64:69:6e:67:3a:20:67:7a:69:70:2c:20:64:65:66:6c:61: 74:65:0d:0a:55:73:65:72:2d:41:67:65:6e:74:3a:20:4d:6f:7a:69:6c:6c:61:2f:34:2e: 30:20:28:63:6f:6d:70:61:74:69:62:6c:65:3b:20:4d:53:49:45:20:38:2e:30:3b:20:5 7:69:6e:64:6f:77:73:20:4e:54:20:36:2e:30:3b:20:54:72:69:64:65:6e:74:2f:34:2e: 30:3b:20:53:4c:43:43:31:3b:20:2e:4e:45:54:20:43:4c:52:20:32:2e:30:2e:35:30:3 7:32:37:3b:20:4d:65:64:69:61:20:43:65:6e:74:65:72:20:50:43:20:35:2e:30:3b:20 :2e:4e:45:54:20:43:4c:52:20:33:2e:35:2e:33:30:37:32:39:3b:20:2e:4e:45:54:20: 43:4c:52:20:33:2e:30:2e:33:30:36:31:38:3b:20:49:6e:66:6f:50:61:74:68:2e:31:3 b:20:2e:4e:45:54:20:43:4c:52:20:34:2e:30:2e:32:30:35:30:36:29:0d:0a:48:6f:73: 74:3a:20:31:39:32:2e:31:36:38:2e:31:2e:32:32:3a:33:30:30:38:30:0d:0a:43:6f:6 e:6e:65:63:74:69:6f:6e:3a:20:4b:65:65:70:2d:41:6c:69:76:65:0d:0a:0d:0a
パケットから仕組みを眺める
達人になると 先ほどの文字の羅列が読めるよう になる という伝説もありますが、 私は達人どころか素人なので 読めるように変換します
パケットから仕組みを眺める
・帯域制御はクライアント側から GET GET /bbb/Big%20Buck%20Bunny.ism/QualityLevels(300000)/Fragments(video=0)? packetpair=633837008100563875 HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1; .NET CLR 4.0.20506) Host: 192.168.1.22:30080 Connection: Keep-Alive
パケットから仕組みを眺める
・帯域制御はクライアント側から GET GET /bbb/Big%20Buck%20Bunny.ism/QualityLevels(2436000)/Fragments(video=20 000000)?packetpair=633837008102878180 HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1; .NET CLR 4.0.20506) Host: 192.168.1.22:30080 Connection: Keep-Alive
パケットから仕組みを眺める
クライアントからの GET = Silverlight から配信品質の コントロールができる エンジニアにとっては 開発・展開が容易 !!
パケットから仕組みを眺める 動画データは 1460 バイトの 断片データの連なりとして クライアントに配信されていました
まとめ
・帯域制御はクライアント 開発しやすい !! ・ 80 番ポート以外を必要としない 下手なポートを使って帯域制限され る恐れもない !! ・動画データは断片として配信 細かいシークが可能
まとめ
・ユーザーが帯域を気にする必要がない !
まとめ
・ユーザーが帯域を気にする必要がない !
・ユーザーが帯域を気にする必要がない !
まとめ
これって素晴らしい ユーザーエクスペリエンスじゃないです か?
ご清聴ありがとうございました