0

他のアプリケーションへのビデオのストリーミングをサポートする必要がある http Web サーバーを作成しました。シーク中に Windows Media Player の問題に直面しています。特定の方法でシークすると Windows Media Player がクラッシュします。これ以外は正常に動作しています。

メディア プレーヤーがクラッシュする手順。

シーク バーに 3 つのポイントがあるとします (たとえば、A、B、C)。

1) A はビデオの開始位置です。

2) ポジション C にジャンプします。

3) B の位置にジャンプして戻ります。

4) 再び位置 C (または位置 B の前の任意の位置) にジャンプして戻ります (これは、メディア プレーヤーが次のエラーでクラッシュする場所です)。

「ファイルの再生中に Windows Media Player で問題が発生しました。」

メディア プレーヤーがクラッシュすると、Web サーバーにリクエストが届きません。そうしないと、サーバー側で通常のシーク(コンテンツ範囲)httpリクエストを取得しています。

ポイント B へのジャンプ時にメディア プレーヤーと交換された最後の HTTP 要求と応答。

リクエスト:

GET XXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Connection: keep-alive
Cache-Control: no-cache
Pragma: getIfoFileURI.dlna.org
Accept: */*
Range: bytes=10125312-16437247
User-Agent: NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG: 1
TransferMode.DLNA.ORG: Streaming
Host: localhost:16716

応答:

HTTP/1.1 206 Partial Content
Date: Fri, 08 Mar 2013 11:41:54 GMT
Content-Type: video/mp4
Access-Control-Allow-Origin: *
Connection: keep-alive
TransferMode.DLNA.ORG: Streaming
File-Size: 33994175
Accept-Ranges: bytes
Content-Range: bytes 10125312-16437247/16437248
Content-Length: 6311936

ありがとう

4

1 に答える 1

4

この問題は、応答の無効なContent-Rangeヘッダーが原因である可能性があります。

応答はヘッダーを指定しFile-Size: 33994175ますが、Content-Rangeヘッダーは何か違うことを言っています:

Content-Range: bytes 10125312-16437247/16437248

スラッシュ ( ) に続く範囲コンポーネント/16437248は、基になるリソースの完全なサイズをバイト単位で反映する必要があります。Windows Media Player は、16437248位置の後にコンテンツがないことを意味すると考えており、ボークします。

問題のヘッダーを次のように変更すると、問題が解決するはずです。

Content-Range: bytes 10125312-16437247/33994175
于 2013-03-08T16:25:10.063 に答える