2006/05/15
ASXファイルをASPで動的に生成する
by
Days
—
posted at
2006-05-15 23:18
last modified
2006-05-15 23:19
タイトル通りのことは、Microsoftの[HOWTO] ASP ページを使って ASX ファイルを動的に生成する方法を踏んでやれば、問題なくできるわけですが、それなのにはまりました。
映像が表示されるはずのエリアは真っ白、「指定されたストリームの種類は認識されません」というエラーメッセージ。
これは、OBJECTタグを使って、HTMLにWindows Media Playerを埋め込んだ場合にだけ表示され、ロケーションバーからASXのURLに直接アクセスする場合は問題なくWindows Media Playerが呼ばれ、目的の映像が再生されます。いったいなぜ?
映像が表示されるはずのエリアは真っ白、「指定されたストリームの種類は認識されません」というエラーメッセージ。
これは、OBJECTタグを使って、HTMLにWindows Media Playerを埋め込んだ場合にだけ表示され、ロケーションバーからASXのURLに直接アクセスする場合は問題なくWindows Media Playerが呼ばれ、目的の映像が再生されます。いったいなぜ?
MIME-Typesが間違っているのかと思い、調べていると "video/x-ms-asf" で間違いない。ASXも、ASFも同じMIME-Typesなんだな、と思いつつ、はたと気づく。「指定されたストリームの種類は認識されません」というのは、この判別がWindows Media Playerにできていないせいのではないだろうか。
というのは、"generate_asx.asp?file=movie.asf" というふうに、映像ファイルの名前をそのまま引数に使っていたから。これだと、ASPファイルの冒頭に response.contenttype = "video/x-ms-asf" と書くだけじゃ、ASXファイルではなく、ASFファイルと誤解されてしまうようなのです(ちなみに、拡張子を ".wmv" にしても解決せず)。
引数では拡張子を外し、"generate_asx.asp?file=movie" というふうにして、ASPファイルの中で 引数 & ".asf" としたら、解決しました。
つまりはWindows Media Playerは「ストリームの種類」を拡張子で区別していたわけで、その素朴さにちょっと驚いた次第。
- Category(s)
- 仕事の周辺