尝试从 servlet(渐进式下载样式)将视频流式传输到 Windows 媒体播放器。流媒体工作,但我有一些奇怪的行为,我想排除不是由我的实现中的问题引起的。
当使用 WMP 从 servlet 打开 url 时,WMP 将对同一资源执行总共 4 次 http-get 请求,但每次请求的标头略有不同。发送请求(包括标头)后,前 3 个请求的连接似乎已关闭。第四个请求保持连接,我实际上可以传递响应标头和文件内容。
已尝试使用wireshark 观看前三个请求。为所有 4 个请求发送相同的响应开始,前 3 个请求设法发送响应标头,以及关闭之前的部分文件内容。(不知道它是否相关,但必须启用“支持从支持 IP TSO 的硬件捕获数据包”才能使wireshark 正确解析流,否则包含 http-response 的第一个数据包被视为格式错误。)
下面的 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)