美文网首页iOS开发
2015-10-15--ios视频的一些坑

2015-10-15--ios视频的一些坑

作者: 夜千寻墨 | 来源:发表于2015-10-16 13:15 被阅读914次

    1. 

    NSURLConnection 开启的请求最多只能同时进行4个,如果超过4个再开启请求,超出的部分将会处于挂起状态,如果前面有请求结束,取消等情况,后面的请求就会按顺序补上。如果处于挂起状态的请求如果等待时间过长,也会被自动取消。关于最多4个NSURLConnection请求,api里面并没有提到,在stackoverflow里面有很多人都有提到,并且我自己也验证了。

    2.

     NSMutableURLRequest 如果要加上Range请求的范围,那么一定要这样创建请求:

    NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:[actualURLComponentsURL]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:20.0];

    [requestaddValue:[NSStringstringWithFormat:@"bytes=%ld-%ld",2000, 555555] forHTTPHeaderField:@"Range"];

    self.connection= [[NSURLConnectionalloc]initWithRequest:requestdelegate:selfstartImmediately:NO];

    如果你是这样创建的请求:

    NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

    [requestaddValue:[NSStringstringWithFormat:@"bytes=%ld-%ld",2000, 555555] forHTTPHeaderField:@"Range"];

    self.conn= [NSURLConnectionconnectionWithRequest:requestdelegate:self];

    会有一个很严重的后果,对于同一个url,第一次加了什么样range范围,以后的请求不管加不加range,请求回来的request数据都是第一个range范围内的数据,简而言之,第一次加了什么range,以后怎么也改不了。关于这一点的原因api有提到。

    3. 

    正常状态下地请求,就是不加range的请求,返回的head中包含了contentType信息,但是加了range之后,就不包含了contentType信息了,如果是通过resourceLoader给AVplayer填充数据的形式实现视频的边下边播,每次请求都需要自己补充contentType信息。

    4. 

    通过resourceLoader给AVplayer填充数据的形式实现视频的边下边播,每次拖动都会产生很多个请求,实际上,只给最后一个请求填充数据,视频就能流畅播放。理论上每一个不需要的请求都会走一个结束的代理方法告知你取消,但是有一个并没有,如果只处理一个请求,表面上看上去没有问题,但是我们它的内部实现原理,找了很多资料,国外有些人只处理一个,有些人处理多个,没有一个定论。为了保险,还是处理多个吧。

    相关文章

      网友评论

        本文标题:2015-10-15--ios视频的一些坑

        本文链接:https://www.haomeiwen.com/subject/pwxacttx.html