【问题标题】:Facing issue in my http WebServer while streaming video to Windows Media Player?在将视频流式传输到 Windows Media Player 时,我的 http WebServer 面临问题?
【发布时间】:2013-02-23 23:06:59
【问题描述】:

我创建了一个 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

谢谢

【问题讨论】:

  • 谢谢@rdlowrey.. 它解决了我的问题。
  • 太好了,我将把它作为答案发布。请接受它:)
  • 我遇到了同样的问题:Content-Length 比请求的范围长(发送的数据也是如此)

标签: http video-streaming windows-media-player http-content-range


【解决方案1】:

此问题可能是由于您的响应中的 Content-Range 标头无效所致。

响应指定了 File-Size: 33994175 标头,但您的 Content-Range 标头说明了不同的内容:

Content-Range: bytes 10125312-16437247/16437248

斜杠 (/16437248) 后面的范围组件应反映底层资源的完整大小(以字节为单位)。我怀疑 windows 媒体播放器认为这意味着在 16437248 位置和 borks 之后没有内容。

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

Content-Range: bytes 10125312-16437247/33994175

【讨论】:

  • 我在响应中发送这些标头(TransferMode.DLNA.ORG: Streaming 和一些与 DLNA 相关的)。他们真的需要吗?因为如果我不发送它们,那么它也可以正常工作!
  • @user1187575 它们在 HTTP 协议中没有任何意义,我对它们并不熟悉。没有它们,任何正确实现 HTTP 的客户端都应该可以正常工作。如果您不知道它们的用途,我不会费心保留它们。
猜你喜欢
  • 2016-09-29
  • 1970-01-01
  • 2014-04-12
  • 2022-07-20
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多