Skip to content

fileList

shixuemei edited this page Apr 13, 2017 · 4 revisions

播放数组形式的url

启动播放前,可将一组分片url传递给播放器,播放器会将其看做是一个视频文件进行播放,分片播放切换过程对用户无感知,该特性多适用于内容提供方将一个视频文件切割成若干个分片的情况(非m3u8协议)。

该特性只适用于点播,直播请勿使用

版本要求:v2.1.0及以上

1. 设置url

1.1 创建播放器对象时传入播放地址

- (instancetype)initWithContentURL:(NSURL *)url fileList:(NSArray )fileList sharegroup:(EAGLSharegroup)sharegroup NS_DESIGNATED_INITIALIZER

1.2 已有播放器对象,再次播放时传入播放地址

- (void)setUrl:(NSURL *)url fileList:(NSArray *)fileList

无论initWithContentURL方法,还是setUrl方法,都有url和filelist两个参数,两者之间的关系说明如下:

  • url和fileList不能同时为空,同时为空调用prepareToPlay方法后会上报KSYMPErrorInvalidURL错误码
  • url为nil,fileList不为nil时,播放器取list中的地址进行播放,适用于分片中的地址完全不同时的情况,参考3.1示例
  • url不nil,fileList为nil时,播放器取url进行播放,此时即为普通的url播放
  • url和fileList都不为nil,播放会认为url是绝对地址,list为相对地址,找到url中的最后一个'/'进行拼接后播放,适用于分片url中只有资源文件名不同的情况,参考3.2示例

2. 特性说明

  • 可支持的分片封装格式包括flv、ts、mp4等
  • 要求所有的分片封装格式、音视频编码格式、参数完全相同,不同的话可能会造成后面的分片无法正常播放
  • 播放器会将该地址作为一个视频来播放,与时间相关的方法,如currentPlaybackTime、duration、seekTo等,都是基于整体来计算的
  • MPMediaPlaybackIsPreparedToPlayDidChangeNotification和MPMoviePlayerPlaybackDidFinishNotification消息在播放过程中只发送一次,而不是每个分片播放时都会发送

3. 调用示例

3.1 使用initWithContentURL方法

   NSMutableArray *list = [NSMutableArray arrayWithCapacity:0];
   [list addObject:@"http://192.168.1.141/list/souhu/1.mp4"];
   [list addObject:@"http://192.168.1.142/list/souhu/2.mp4"];
   [list addObject:@"http://192.168.1.143/list/souhu/3.mp4"];
   [list addObject:@"http://192.168.1.144/list/souhu/4.mp4"];
   player = [[KSYMoviePlayerController alloc] initWithContentURL:nil fileList:list sharegroup:nil];

3.2 使用setUrl方法

   NSURL *url = [NSURL URLWithString:@"http://192.168.1.144/list/souhu/"];
   NSMutableArray *list = [NSMutableArray arrayWithCapacity:0];
   [list addObject:@"1.mp4"];
   [list addObject:@"2.mp4"];
   [list addObject:@"3.mp4"];
   [list addObject:@"4.mp4"];
   [player setUrl:url fileList:_list];

4. 注意事项

  1. 由于prepare时需要依次解析所有分片的格式信息,建议播放list形式的url时,使用setTimeout方法将prepare超时时间设置长一些。例如假设每个分片的的允许超时时间为T秒,如果有N个分片,prepare超时时间可设置为不超过N*T秒。
Clone this wiki locally