我正在尝试修改一个自定义的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进行测试,但最终需要在所有浏览器上运行。
video
和source
标签中没有任何属性可以帮助管理部分内容传递。因此,我认为媒体交互的这一部分完全由浏览器的责任承担(至少目前是这样)。如果您想更好地控制内容传递,您应该开发一个自定义机制,利用一些服务器端软件:这样您就可以请求并响应具有偏移量和长度限制的视频。 - Stan