プログレッシブ ダウンロード のシークとソース フィルタの関係

 

こんにちは、はらだんです。本日はプログレッシブダウンロードの挙動についてお話しします。

 

Windows Media Service(WMS) によるストリーミングサービスではなく、Web サーバーに動画コンテンツを置き、これを再生する場合、WMP はストリーミングではなく、単純にダウンロードを行いながら再生を行います。

 

この場合コンテンツのビットレートには関係なく、可能な最大の速度でコンテンツを IE のキャッシュにダウンロードしつつ、WMP は先頭から再生を開始いたします。

 

コンテンツの任意の場所からの再生(シーク)、早送り、巻き戻しなどはできないのがプログレッシブダウンロードの特徴で、ストリーミングとの違いです。ただし、コンテンツが完全に IE のキャッシュに入ると、これはローカルコンテンツの再生となるので上記の制限はなくなります。

 

実際に使ってみると Windows XP の WMP ではシークができませんが、Windows Vista / Windows 7 の WMP ではシークが可能です。

 

実はこの違いは WMS が使うコンテンツのソースフィルタが XP と Vista 以降で異なることに起因しています。

 

XP の WMP では Windows Media Format SDK の WM ASF Reader フィルタが使用され、 Vista 以降では Media Foundation (MF) の機能を継承したいわば MF 版非同期ファイルソースフィルタが使用されます。

そしてこの MF 版非同期ファイルソースフィルタにはプログレッシブ ダウンロード時のシーク機能が実装されています。

 

なお、XP でもローカル キャッシュがある場合にはシーク可能です。これはローカル キャッシュから再生する場合には WM ASF Reader ではなく非同期ファイルソースフィルタが使用されるためです。この場合、読み込んでいるのはローカル ディスク上のファイルですので普通にシーク可能です。

 

ソースフィルタの使い分けをご検討の際にはこのような動作の違いがあることをご一考いただければと思います。