0

我创建了一个 http 网络服务器,它需要支持将视频流传输到其他应用程序。我在寻找时遇到了 Windows 媒体播放器的问题。当我以特定方式搜索时,Windows 媒体播放器崩溃。除此之外,它工作正常。

媒体播放器崩溃的步骤。

假设搜索栏上有 3 个点(比如 A、B、C)。

1) A 是视频的起始位置。

2) 跳转到位置 C。

3) 跳回位置 B。

4)再次跳回位置C(或位置B之前的任何位置)。(这是媒体播放器因跟随错误而崩溃的地方。)

“Windows Media Player 在播放文件时遇到问题”。

当媒体播放器崩溃时,我的网络服务器上没有收到任何请求。否则在我的服务器端,我会收到正常的 seek(content-range) 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 媒体播放器认为这意味着16437248位置和 borks 之后没有内容。

将有问题的标题更改为以下内容应该可以解决问题:

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