msnews microsoft.public.jp.mediaplayer
ニュースグループにて
ブラウザからMediaFileにアクセスするも、User=AgentがMediaPlayerからファイルを要求するため
cooikeがwwwサーバに到達せず、wwwサーバよりリクエストを拒否し再生が出来ない
という投稿を発見した。
なるほど、そういう事になるのか・・・と ある意味関心した私は調査を開始した。
単純に
http://hoge.co.jp/media.asf
とアクセスしてもダメらしいから、HPにMediaPlayerのActivXコントロールを貼り付け
そこからアクセスしたらどうなるか調べてみた。
既にサイトに用意していたMediaPlayer組み込みデモページがあったので
それにアクセスし、ブラウザが要求するHTTPヘッダーを覗いてみた。
HTTPヘッダを覗くにはこれも私が自作した転送兼モニターServerを利用することとした。
・EgbServerでHPに組み込まれたMediaPlayer(AciveXコントロール)から要求するHttpヘッダを覗く
まず、EgbServerを起動する
C:\・・デスクトップ\EgbServer>java -jar Egbserver.jar 1000 homepage3.nifty.com 80 TransServer started on port 1000 <自PCの port 1000番で リクエストを待ち homepage3.nifty.com のport 80 番に転送する> |
そしてIEのプロキシ設定を localhost の port
1000 番に設定。
MediaPlayer組み込みデモページ にアクセス。
その結果が以下
| 中略 ------------------------------ GET http://homepage3.nifty.com/tokeon/Media/meetdemo/mov/akubi.jpg HTTP/1.0 Accept: */* Referer: http://homepage3.nifty.com/tokeon/Media/meetdemo/yobidasi.html Accept-Language: ja Pragma: no-cache If-Modified-Since: Tue, 11 Jun 2002 18:25:15 GMT User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: homepage3.nifty.com Proxy-Connection: Keep-Alive Cookie: Tokeo=0; Date=2002/06/12%2009%3A16%3A47 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [18]Client(127.0.0.1:2707) -> [18]Server(61.XXXX:80) 転送サイズ:424 [18]Server(61.XXXX:80) -> [18]Client(127.0.0.1:2707) データ転送開始 ------------------------------ HTTP/1.1 304 Not Modified Server: Zeus/3.4 Date: Fri, 21 Jun 2002 12:59:09 GMT Connection: close ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [18]Server(61.XXXX:80) -> [18]Client(127.0.0.1:2707) 転送サイズ:103 [18]Server(61.XXXX:80) -> [18]Client(127.0.0.1:2707) 転送終了:103 [18]Client(127.0.0.1:2707) -> [18]Server(61.XXXX:80) 転送終了:424 [19]Client(127.0.0.1:2712) -> [19]Server(61.XXXX:80) データ転送開始 ------------------------------ GET http://homepage3.nifty.com/tokeon/Media/meetdemo/mov/akubi.asf HTTP/1.0 Accept: */* User-Agent: NSPlayer/7.1.0.3055 Proxy-Connection: Keep-Alive Host: homepage3.nifty.com Cookie: Tokeo=0; Date=2002/06/12%2009%3A16%3A47 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [19]Client(127.0.0.1:2712) -> [19]Server(61.XXXX:80) 転送サイズ:231 [19]Server(61.XXXX:80) -> [19]Client(127.0.0.1:2712) データ転送開始 ------------------------------ HTTP/1.1 200 OK Server: Zeus/3.4 Date: Fri, 21 Jun 2002 12:59:20 GMT Connection: close Content-Length: 57517 Content-Type: video/x-ms-asf Last-Modified: Tue, 11 Jun 2002 18:25:25 GMT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [19]Server(61.XXXX:80) -> [19]Client(127.0.0.1:2712) 転送サイズ:36500 |
[19]番目のリクエスト、ここがまさしくUser-AgentにMediaPlayerとなっている。
ではどうすれば、、、この件はいろいろ試されたようだが、これという結果が無いようだ。
私はここでまた思い出した、、、そうDirectAnimationを使ったMedia再生を!
これはIEに組み込まれたマルチメディア・アニメーションを容易に実現する物で、
Media再生にはDirectXを利用してストリームアクセス、デコード、再生を行うらしい。。

先の経験やScriptサンプルから
以下の様なHTML(このページ後方がその実体)を作成し確認することに。
| <HTML> <HEAD> <TITLE>DirectAnimation Movie Play</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=shift_jis"> </HEAD> <BODY STYLE="font-size:9pt;" onload="start()"> <SCRIPT language="JScript"> <!-- var m; var movieImg; var movieSnd; function start() { Setup("") ; } function Setup(initmovie) { m = DAControl.PixelLibrary; //Movieを仮にインポート movie = m.ImportMovie(initmovie); // A movie is treated as an image and a sound. // Here we make the movie's video track loop, by // only allowing time to range from 0 to the duration // of the movie. movieImg = m.ModifiableBehavior( movie.Image.SubstituteTime(m.mod(m.LocalTime,movie.Duration))); // Now we make the movie's sound loop. // Sound is a continuous media, so all we need to do is // create a looping version of the sound track. movieSnd = m.ModifiableBehavior(movie.Sound.Loop()); DAControl.Image = movieImg ; DAControl.Sound = movieSnd ; DAControl.Start() ; } function SetMovie(movurl) { movie = m.ImportMovie(movurl);//document.all('movf').value) ; movieSnd.SwitchTo(movie.Sound); movieImg.SwitchTo(movie.Image); // movieSnd.SwitchTo(movie.Sound.Repeat(1)); // movieImg.SwitchTo(movie.Image.Repeat(1)); // movieSnd.SwitchTo(movie.Sound.RepeatForever()); // movieImg.SwitchTo(movie.Image.RepeatForever()); } //--> </SCRIPT> <H2>DirectAnimationを使用したMovie再生</H2> <HR> <OBJECT ID="DAControl" WIDTH=200 HEIGHT=200 ALIGN=Center CLASSID="CLSID:B6FFC24C-7E13-11D0-9B47-00C04FC2F51D"> </OBJECT> <BR> <hr> <form> Movie url/file:<input type=text size =80 name="movf" value="http://homepage3.nifty.com/tokeon/Media/meetdemo/mov/pat64.asf"> <br> <input type=button value="設定開始・リピート " onClick="SetMovie(movf.value)"> </form> <hr> </BODY> </HTML> |
どうですか? 上の太文字部分がDirectAnimationでMovieを再生するScript!たった10行もあれば出来る! そして青文字がDirectAnimationコントロール!! IE4以上(確か?)であればインプリメントされている。
そして、そのページurl(ここの事)を表示
設定開始を押して、Movieのロードと再生が始まる。
この時のMovieファイルへのアクセスリクエストは。
| [4]Client(127.0.0.1:1197) -> [4]Server(61.XXXX:80)
データ転送開始 ------------------------------ GET http://homepage3.nifty.com/tokeon/Media/meetdemo/mov/pat64.asf HTTP/1.0 Accept: */* Proxy-Connection: Keep-Alive User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: homepage3.nifty.com Cookie: Tokeo=0; Date=2002/06/12%2009%3A16%3A47 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [4]Client(127.0.0.1:1197) -> [4]Server(61.XXXX:80) 転送サイズ:262 [4]Server(61.XXXX:80) -> [4]Client(127.0.0.1:1197) データ転送開始 ------------------------------ HTTP/1.1 200 OK Server: Zeus/3.4 Date: Fri, 21 Jun 2002 13:54:41 GMT Connection: close Content-Length: 184505 Content-Type: video/x-ms-asf Last-Modified: Tue, 11 Jun 2002 18:24:39 GMT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [4]Server(61.XXXX:80) -> [4]Client(127.0.0.1:1197) 転送サイズ:184698 [4]Server(61.XXXX:80) -> [4]Client(127.0.0.1:1197) 転送終了:184698 [4]Client(127.0.0.1:1197) -> [4]Server(61.XXXX:80) 転送終了:262 |
まさに、AgentはMSIE6!そして、Cookieもしっかり通ってます!!
もう忘れられているようで・・・DirectAnimationは素晴らしい
これは本当に素晴らしい、その一例を このページに示す。
これは、Movieファイルを背景gifにインポーズし、再生しながら、回転とマウスによる移動まで行える!
まさにマルチインタラクティブMovieページである。
これがjavaアプレットの様にアプレットをダウンロードする時間もかからなければ
別にActiveXの様にインストール手順を踏むこともなく、
JScriptだけで制御出来てしまうのだ!
2002/6/21 企画、作成 Engineering-B H.tokeo(tokeon@rainbow.plala.or.jp)本田とけお
本記事の問い合わせはEnginieering-B までお願いします。