美文网首页
iOS m3u8详情页预加载逻辑

iOS m3u8详情页预加载逻辑

作者: 王方帅 | 来源:发表于2022-04-15 09:46 被阅读0次

    详情页m3u8预加载需求:
    加载完当前模板所有ts后,加载后续2个模板的2个ts文件

    初步规划:

    (1)当前加载时传入两个reload url,当前完成时将这两个url传入preloadManager进行预加载
    (2)返回时取消当前预加载,在列表展示前完成取消,因为列表展示会触发列表预加载。
    (3)滑到下一页时停止当前预加载,然后重复执行步骤1
    (4)点击使用模板时停止当前预加载,返回模板页后暂停执行,恢复播放后继续步骤1
    (5)看一下拉取更多模板是在什么时机,会不会存在正常下方有2个模板但拉取不到2个模板的情况。
    (6)测试后台返回前台预加载是否正常。

    汇总规划:

    (1)播放前停止预加载,传入两个reloadUrl,当前m3u8结束后将这两个url传入preloadManager进行预加载 OK
    (2)返回时删除两个reloadUrl,并取消预加载,在列表展示前完成取消 OK
    (3)看一下拉取更多模板时机问题,有无影响模板预加载url的获取。 OK
    新增一个uploadPreloadURL的方法,如果调用m3u8loader的cancelAll时url不为两个,则在拉取更多后调此方法。
    方法中判断如果当前m3u8已经加载完了则直接preload开始,否则设置preloadURL属性,等加载完的回调里preload开始。
    (4)进入后台时取消预加载,返回前台重新预加载。 OK
    (5)进入相册如果当前已经播放完了,会有两个预加载正在进行,此时取消并记录状态,返回时继续预加载。OK
    暂时不取消了,防止逻辑过多出现bug。

    网络差时,详情页预览图播放,开发记录:
    1,竖向列表进来、横向列表进来、下滑先看看MP4是否已经下载到本地,已经下载了则进行下一步 OK
    2,HLS添加获取m3u8和ts是否已经下载的方法。 OK
    3,判断是否ts加载完成,没有的话创建MP4Player。 OK
    4, mp4Player创建一个父类,父类大小设置跟imageView占位图大小一致, OK
    5,在cell显示时播放mp4,移出屏幕后停止mp4. OK
    6,在m3u8播放器开始播放的回调中移除MP4Player OK
    7,模拟慢网的情况,在慢网下看看是不是ts加载完开始播放了才移除的MP4Player OK
    8,如果滑动到下一个则播放下一个mp4视频。 OK
    9,看一下是否正常走了PreviewCell的deinit OK
    10,外面m3u8下载失败在里边会重新开始下载。OK

    相关文章

      网友评论

          本文标题:iOS m3u8详情页预加载逻辑

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