公司产品最近出了个bug,就是视频在iphone上无法播放,一直在加载,最后也没法加载成功!但是在其他平台(安卓、web)是可以播放的,老大叫前端找下原因。
在网上找了一上午的资料,终于找到原因了,这是知乎上的回答 video标签在iPhone手机上不能播放?万能的知乎大神请指引我,实在没办法了
在此做下记录。。。
之前的做法是前端通过src请求一个视频文件,后台是返回一整个视频文件的,chrome的兼容性做的比较好,所以不会出现问题,但是对于safari,他不是一次性请求全部文件,一般是先请求0-1字节,这个写在request header的range字段中,range:bytes=0-1,如果是想要传输视频,必须解析range字段,response header中一定要包含Content-range,格式是bytes <start>-<end>/<total>,total是返回的文件总大小。
chrome有时间会请求全部内容,range:bytes=0-,后台这时就需要返回一整个文件
这样做的好处就是可以节省流量吧,只有当用户点击播放才请求整个文件,可以根据response header的content-range来获取文件总长度。
网友评论