视频流

04 24,2014

PHP返回视频流给iOS播放

通过手机上传视频,然后返回URL给IOS进行播放,因为播放地址是通过PHP读取然后返回的,在网页上正常播放,但是在IOS就无法播放。

以下是header头部信息:

HTTP/1.1 200 OK
Server: nginx/1.2.7
Date: Thu, 24 Apr 2014 02:20:29 GMT
Content-Type: video/mp4
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.26
Accept-Ranges: bytes

通过抓包发现IOS请求是通过断点续传的方式。
HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:

  • 客户端下载一个1024K的文件,已经下载了其中512K
  • 网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:
    Range:bytes=512000-
    这个头通知服务端从文件的512K位置开始传输文件
  • 服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:
    Content-Range:bytes 512000-/1024000
    并且此时服务端返回的HTTP状态码应该是206,而不是200。