无需加载即可播放 HTML5 视频

Kev*_*jer 0 html video mp4 http-headers

我有一个问题,当我用 HTML5 播放器播放一个大文件时,它会在 5 分钟后开始播放,因为他在播放前先下载了视频。无论视频大小如何,如何立即开始播放并让它在播放时下载?

在谷歌上搜索了 3 天,但没有找到任何东西。我希望有人可以帮助我,谢谢

HTTP 标头(不是文件路径)

Status: HTTP/1.1 200 OK
Server: nginx   
Date:   Fri, 19 Sep 2014 15:38:02 GMT   
Content-Type:   text/html; charset=UTF-8    
Transfer-Encoding:  chunked 
Connection: close   
X-Powered-By:   PHP/5.4.32  
Cache-Control:  no-store, no-cache, must-revalidate, max-age=0  
Cache-Control:  post-check=0, pre-check=0   
Pragma: no-cache    
Content-Encoding:   gzip
Run Code Online (Sandbox Code Playgroud)

HTTP 标头(文件路径)

GET patt/to/file HTTP/1.1[CRLF]
Host: domain[CRLF]
Connection: close[CRLF]
User-Agent: Web-sniffer/1.1.0 (+http://web-sniffer.net/)[CRLF]
Accept-Encoding: gzip[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no-cache[CRLF]
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
Referer: http://web-sniffer.net/[CRLF]
Run Code Online (Sandbox Code Playgroud)

需要让它在第一个上工作

Hit*_*esh 5

  1. 确保moov(metadata) 在mdat(audio/video data) 之前。这也称为“快速启动”或“网络优化”。例如,Handbrake 有一个“Web Optimized”复选框,而ffmpegavconv有输出选项-movflags faststart
  2. 确保您的网络服务器报告正确的内容类型(视频/mp4)。
  3. 确保您的网络服务器配置为服务字节范围请求
  4. 确保您的 Web 服务器没有在 mp4 文件中的压缩之上应用 gzip 或 deflate 压缩。

您可以使用curl -I http://yoursite/video.mp4访问 http://web-sniffer.net/并在那里输入您的 mp4 URL来检查 Web 服务器发送的标头。HTTP 响应头应该包括Content-Type: video/mp4Accept-Ranges: bytes,没有Content-Encoding: