我正在尝试修改自定义 Web 服务器应用程序以使用 HTML5 视频。
它提供一个带有基本<video>
标签的 HTML5 页面,然后它需要处理对实际内容的请求。
到目前为止,我可以让它工作的唯一方法是将整个视频文件加载到内存中,然后以单个响应将其发送回。这不是一个实用的选择。我想一块一块地提供它:发回,比如说,100 kb,然后等待浏览器请求更多。
我看到一个带有以下标头的请求:
http_version = 1.1
request_method = GET
Host = ###.###.###.###:##
User-Agent = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept = video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language = en-US,en;q=0.5
Connection = keep-alive
Range = bytes=0-
我试图发回部分内容响应:
HTTP/1.1 206 Partial content
Content-Type: video/mp4
Content-Range: bytes 0-99999 / 232725251
Content-Length: 100000
我又收到了几个 GET 请求,如下
Cache-Control = no-cache
Connection = Keep-Alive
Pragma = getIfoFileURI.dlna.org
Accept = */*
User-Agent = NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG = 1
Host = ###.###.###.###:##
(没有迹象表明浏览器需要文件的任何特定部分。)无论我向浏览器发送什么,视频都不会播放。
如上所述,如果我尝试在同一个 HTTP 数据包中一次发送整个 230 MB 文件,则相同的视频将正确播放。
有没有办法通过部分内容请求让这一切正常工作?我使用 Firefox 进行测试,但它最终需要与所有浏览器一起使用。