最近有客户提出,拍摄的视频文件,安卓上可以正常的播放。但class="superseo">ios上无法正常播放。在网上找了很多资料,踩过一些坑,在这里记录一下。
刚开始时代码返回的视频流是在一个请求里全部返回的,而苹果的浏览器会先发一次探测请求来获取文件大小,之后再发送多次请求来分段取数据流的数据,其实这里就是一个分段下载的思想(Accept-Ranges)。有两个很重要的点就是,
第一:需要根据请求内容的不同做出不同的响应,当收到分段请求时(Http Request Headers包含"Range"参数),需要返回返回206状态码,否则返回200状态码或可以不管。
第二:contentType必须设置为video/mp4。一开始我针对mov文件返回video/mov,不行,后来改为video/mp4就可以了。注意,IOS也不支持 video/mpeg4!!!
下面是可以直接使用的代码:
public void GetVideoFile(HttpContext context)
{
//WriteLog("Request.Headers:" + context.Request.Headers.ToString());
long contentLength = 0;
long requestSize = 0;
long requestStart = 0, requestEnd = 0;
string range = context.Request
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)