通过http将视频流式传输到Windows Media Player

时间:2010-10-08 18:42:23

标签: java servlets streaming wmp

尝试从servlet(渐进式下载样式)将视频流式传输到Windows Media Player。流式传输工作,但我有一些奇怪的行为,我想排除这不是由我的实现中的问题引起的。

当使用WMP从servlet打开URL时,WMP将对同一资源执行总共4次http-get请求,但每次都有略微不同的标头。一旦请求(包括标题)被发送,前3个请求的连接似乎就会关闭。第四个请求保持连接状态,我实际上可以提供响应标头和文件内容。

尝试过使用wireshark观看前三个请求。针对所有4个请求发送相同的响应开始,并且前3个请求在关闭之前设法发送响应头和文件内容的一些部分。 (不知道它是否相关,但必须启用“支持从支持IP TSO的硬件的数据包捕获”才能使wireshark正确解析流,否则包含http响应的第一个数据包将被视为格式错误。)

这里有4个请求标题:

GET /basic/test.mpg HTTP/1.1
Accept: */*
User-Agent: Windows-Media-Player/12.0.7600.16415
Accept-Encoding: gzip, deflate
Host: 192.168.1.34
Connection: Keep-Alive

GET /basic/test.mpg HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: getIfoFileURI.dlna.org
Accept: */*
User-Agent: NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385
GetContentFeatures.DLNA.ORG: 1
Host: 192.168.1.34

GET /basic/test.mpg HTTP/1.1
Accept: */*
User-Agent: NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385
Icy-Metadata: 1
Accept-Encoding: gzip, deflate
Host: 192.168.1.34
Connection: Keep-Alive

GET /basic/test.mpg HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: getIfoFileURI.dlna.org
Accept: */*
User-Agent: NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385
GetContentFeatures.DLNA.ORG: 1
Host: 192.168.1.34

回复标题:

HTTP/1.1 200 OK
Content-Type: video/mpeg
Content-Length: 130549760
ETag: TEST1286565215430
ContentFeatures.DLNA.ORG: DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=00
Server: Jetty(6.1.x)

1 个答案:

答案 0 :(得分:0)

  

一旦请求(包括标题)被发送,前3个请求的连接似乎就会关闭。

"似乎是" ?我会发现某种方式或前一种方式。如果在设置响应头之后结束连接,则可能是播放器期望存在非常特定的头。示例可以包括Range:Cache-Control: