IIS Media Pack1 (2) ~ Smooth Streaming


 こんにちは、はらだんです。今回は前回紹介したスムーズストリーミングについて実際に配信中のパケットを取得してその動作をちょっとだけ覗いてみたいと思います。


 


スムーズストリーミングはネットワークやクライアント PC の状況に合わせてコンテンツのビットレートをほぼリアルタイムかつシームレスに変化させる技術です。前もってコンテンツを複数のビットレートでエンコードしておくことでこれを実現します。


 


実はすでにその前身となるものが昨年の北京オリンピックの際に NBCOlympics.com にてオンデマンドで配信されました。オリンピック期間中 US Media チームでは、いつ何が起きてもすぐ対応できるように 24 時間臨戦体制で対応していました。電話会議の時に「今日で 5 日目だよ。」というとても疲れた声が聞こえてきたのを思い出します。


 


さて、Network Monitor 3.2 を使用してスムーズストリーミングを行っているパケットをいやらしく覗いてみましょう。お手元の環境でも以下の手順で確認が可能です。


 


[パケットデータの取得手順]


1. Silverlight2 をインストールする。(smoothHD に接続した際にインストールの表示が出ます。)


2. NetMon 3.2 をインストールする。


3. NetMon 3.2 を起動しキャプチャを開始する。


4. IE を起動し smoothHD に接続する。


5. コンテンツを再生する。


6. 30秒ほど再生したら NetMon3.2 のキャプチャを停止する。


7. Display Filter Contains(Http.Request.URI,"") を記述し Apply ボタンを押す。


8. Frame Summary を見てみる。


 


以下がはらだんの取得したパケットデータです。(Time OffsetDescriptionのみ記載)


 







3.75293         HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=217338775)


4.750977        HTTP:Request, GET /.../QualityLevels(1300000)/Fragments(video=215631653)


5.757813        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=236843537)


6.700195        HTTP:Request, GET /.../QualityLevels(1300000)/Fragments(video=235234530)


7.248047        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=78411510)


7.87793         HTTP:Request, GET /.../QualityLevels(500000)/Fragments(video=98014388)


8.021484        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=117617265)


8.186524        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=137220143)


8.453125        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=156823020)


8.618164        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=176425898)


8.757813        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=196028775)


8.954102        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=215631653)


9.09375         HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=235234530)


9.274414        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=254837408)


9.280274        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=255767800)


9.668945        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=276317460)


10.6416         HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=274440285)


11.62109        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=295822222)


12.59766        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=294043163)


13.42578        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=313933786)


14.5293         HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=313646040)


15.56445        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=334367346)


・・・          ・・・


67.46582        HTTP:Request, GET /.../QualityLevels(800000)/Fragments(video=842923733)


68.40137        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=863782312)


69.44336        HTTP:Request, GET /.../QualityLevels(1300000)/Fragments(video=862526610)


70.31055        HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=882706576)


71.38574        HTTP:Request, GET /.../QualityLevels(1300000)/Fragments(video=882129488)


72.2627         HTTP:Request, GET /.../QualityLevels(64000)/Fragments(audio=902791836)


73.36133        HTTP:Request, GET /.../QualityLevels(1300000)/Fragments(video=901732365)


 


 


QualityLevels がビットレートの指定を行っているようです。Video のパケットでは 500k,800k,1.3M のレートを指定している様子がわかります。Fragmentsについても不明ですが、名前からすると時分割されたビデオやオーディオの位置を指しているようです。100ns単位だと考えるとおおむね合っています。


 


 


Expression Encoder 2 SP1 でコンテンツを作成する場合は 4 種類のビットレートが指定できるのですが、取得したデータからは 3 種類しか確認できませんでした。Netmon でデータを取得中にネットワークに負荷をかけてみるときっと100~300kbpsくらいのレートのログが出るのではないかと思います。


 


また、このデータから、最初の約 10 秒はかなり頻繁に要求が出されていることもわかります。このこと自体はスムーズストリーミングの機能ではなく、WMS のようなファストスタートの機能ではないかと考えられます。初めの数秒をバッファリングしているために要求が集中しているというわけです。


10 秒から後はほぼ一定の間隔で要求が出ています。Video だけに絞って見てみると(黄色くマークした所)約 2 秒の間隔で更新されていることがわかります。実際のネットワークやクライアント PC の状態により、すくなくともこのデータの時は 2 秒程度の間隔でビットレートの変更が行われていたようです。


 


シームレスにつながっていたか?については見た目にはわかりませんでした。コンテンツの映像がどんなものでもシームレスにつながって見えるのかその辺は確認できていません。ビットレートが変わる際に、フレーム間で何か処理を行っているのか、そのまま切り変わるのか、その辺はわかりませんでした。Media Pack のアップデート後に私たちも使えるようになりますのでまたその頃に検証できたらと思います。


 




  


今回は簡単でしたが、このへんで!


~昼間雪が降ったので期待したのにちっとも積もらず残念なはらだん~


 

Skip to main content