0

NetStream、NetConnection、および Video オブジェクトを使用して、http を使用して Web サーバーでホストされている mp4 ファイルを再生しています。

mp4 ファイルの URL は、たとえばhttp://xx.xx.xx.xx/file.mp4 です。

これは AIR アプリケーションで、関連するコードを以下に貼り付けます。


var url:String = <some http url>;

connect_nc = new NetConnection();
connect_nc.connect(null);

stream_ns = new NetStream(connect_nc);

var ns_object:Object = new Object();
ns_object.onPlayStatus = ns_onPlayStatus;

stream_ns.client = ns_object;
videoMP4.attachNetStream(stream_ns);           

stream_ns.bufferTime = 1.0 // 1 sec       
stream_ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusEventHandler);
stream_ns.play(url);

このコードは、MAC OS X で実行すると機能しますが、Windows XP で実行すると機能しません。エラーが発生します:

NetStream.Play.StreamNotFound

また、同じ Windows XP ホストで VLC プレーヤーを使用して URL を再生してみました。VLCで再生できるのでURLは有効です。

私の特定のケースでは、http URL は、WMP 12 のメディア共有機能を使用している Win 7 マシン上の WMP 12 (ウィンドウ メディア プレーヤー 12) によってホストされています。

Wireshark の http トラフィックをさらに調べた結果、次のことがわかりました。

adobe AIRアプリケーションを実行しているホストでwiresharkを実行した後、からHTTP 406応答を取得しているようです

サーバーは WMP 12 によって実行されます。

GET /WMPNSSv4/63903908/1_ezVGREUzQTA4LTdDQzQtNDJFMy1CNDVDLUZEMjA4MDE5OUM4Q30uMC44.mp4 HTTP/1.1
Host: 192.168.0.102:10243
User-Agent: Mozilla/5.0 (Windows; U; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5
Referer: app:/clicker.swf
x-flash-version: 10,0,12,36
Connection: Keep-Alive
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5

応答:

HTTP/1.1 406 Not Acceptable
Last-Modified: Mon, 19 Oct 2009 23:21:14 GMT
Server: Microsoft-HTTPAPI/2.0
Accept-Ranges: bytes
TransferMode.DLNA.ORG: Streaming
Date: Tue, 12 Jan 2010 22:52:48 GMT
Connection: close
Content-Length: 0

MAC の場合:

ただし、200 OK 応答を受信するため、ビデオ ストリーミングが機能します。

GET /WMPNSSv4/63903908/1_ezVGREUzQTA4LTdDQzQtNDJFMy1CNDVDLUZEMjA4MDE5OUM4Q30uMC44.m p4 HTTP/1.1
Host: 192.168.0.102:10243
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5.3
Referer: app:/clicker.swf
X-Flash-Version: 10,0,42,34
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive

応答:

HTTP/1.1 200 OK
Content-Length: 1524867
Content-Type: video/mp4
Last-Modified: Mon, 19 Oct 2009 23:21:14 GMT
Server: Microsoft-HTTPAPI/2.0
Accept-Ranges: bytes
TransferMode.DLNA.ORG: Streaming
Date: Tue, 12 Jan 2010 22:56:20 GMT

Windows XP バージョンと MAC バージョンの間の HTTP 要求で見られる違いは、Accept: ヘッダーです。WMP 12 が http 要求を拒否するため、Accept: ヘッダー値が Windows の場合に間違っていますか。

Windows 7 ホストで Adob​​e AIR アプリケーションを実行すると、同じエラーが発生します。

NetStream オブジェクトを間違って使用していますか、それともヘッダーを正しく解析できない WMP 12 コードのバグですか、それとも正しくない accept: ヘッダーを生成するフレックス バグですか?

4

1 に答える 1

0

WMP 12 は、リクエストの「Accept」ヘッダーを正しく処理していないと思います。'q' (品質) パラメータが含まれている場合、WMP はこの MIME タイプを無視します。また、WMP に適した MIME タイプが他にない場合は、406 Not Acceptable エラーが返されます。

Chrome ブラウザーで DLNA 画像を表示しようとしたときに、この問題が発生しました。

curlユーティリティを使用して、さまざまなヘッダーでリクエストを送信し、何が問題なのかを突き止めました。

406 Not Acceptable エラーになる要求:

curl -v -o file.jpg -H "Accept: text/html,*/*,q=0.8" "http://127.0.0.1:10243/WMPNSSv4/3065481158/0_e0I5MzA1MTRELUYwMEEtNEQwRC1CQzg4LTg3NEI5QjQ4MDYyM30uMC5C.jpg"

GET /WMPNSSv4/3065481158/0_e0I5MzA1MTRELUYwMEEtNEQwRC1CQzg4LTg3NEI5QjQ4MDYyM30uMC5C.jpg HTTP/1.1
User-Agent: curl/7.31.0
Host: 127.0.0.1:10243
Accept: text/html,*/*;q=0.8

HTTP/1.1 406 Not Acceptable
Last-Modified: Tue, 21 May 2013 21:01:09 GMT
Server: Microsoft-HTTPAPI/2.0
Accept-Ranges: bytes
TransferMode.DLNA.ORG: Interactive
Date: Fri, 30 Aug 2013 09:10:32 GMT
Connection: close
Content-Length: 0

成功したリクエスト:

curl -v -o file.jpg -H "Accept: text/html,*/*" "http://127.0.0.1:10243/WMPNSSv4/3065481158/0_e0I5MzA1MTRELUYwMEEtNEQwRC1CQzg4LTg3NEI5QjQ4MDYyM30uMC5C.jpg"

GET /WMPNSSv4/3065481158/0_e0I5MzA1MTRELUYwMEEtNEQwRC1CQzg4LTg3NEI5QjQ4MDYyM30uMC5C.jpg HTTP/1.1
User-Agent: curl/7.31.0
Host: 127.0.0.1:10243
Accept: text/html,*/*

HTTP/1.1 200 OK
Content-Length: 2394679
Content-Type: image/jpeg
Last-Modified: Tue, 21 May 2013 21:01:09 GMT
Server: Microsoft-HTTPAPI/2.0
Accept-Ranges: bytes
TransferMode.DLNA.ORG: Interactive
Date: Fri, 30 Aug 2013 09:10:40 GMT
于 2013-08-30T09:23:13.847 に答える