脚本体验师001 发表于 2023-9-27 14:15:29

视频播放之HLS赏析之坚持坚持再坚持

现在音视频播放很多都采用TS媒体分片传输,当然使用hls.js库是首选,这个库强大的毋庸置疑,并还在不断的改进升级

但有一种情况:在播放过程中ts文件网址失效了怎么办?
重新获取网址那肯定的,然后呢?这个问题困扰了我很长时间
销毁播放器重新播放?替换video元素?销毁HLS?
但都有一个致命的缺点,销毁再重新实例化需要时间,我曾经在缩短时间上各种尝试,效果想也可知,不太好
最要命的是,看视频时明明男主撅起了嘴唇,女主也撅起了嘴唇。观众此时正在揣测下一步会发生什么时,黑屏了...... 你以为要插播广告,不是的网址拉稀了得重新获取

!V9T@3P.png](data/attachment/forum/202309/27/140201on97rkb5rnrdr95b.png)

可以在hls对象相应位置替换新的数据网址
大概有几个地方有类似数据:bufferController,levelController,levels
根据js一点通,哪都通的特性,替换一处即可
替换完了再来一句:hls.startLoad(video.currentTime);
数据会从缓存处重新往下加载,不会再有停顿

咦唏,两张嘴紧紧贴在一起,没有任何障碍,简直太美妙了

王一之 发表于 2023-9-27 14:33:33

替换新的数据网址?但是这个网站怎么和失效的对上呢?

脚本体验师001 发表于 2023-9-27 15:21:09

王一之 发表于 2023-9-27 14:33
替换新的数据网址?但是这个网站怎么和失效的对上呢?

HLS会把M3U文件解析为一个数组保存,替换时可以解析的过程自己干,和旧的数组序号对准就OK

王一之 发表于 2023-9-27 15:25:11

脚本体验师001 发表于 2023-9-27 15:21
HLS会把M3U文件解析为一个数组保存,替换时可以解析的过程自己干,和旧的数组序号对准就OK ...

但是这个有效的网址从那里来呢?

脚本体验师001 发表于 2023-9-27 15:29:40

M3U文件重新获取就可以得到新的,有些网站就是这么撩阴腿,时不时给你网址失效一下,气人不

脚本体验师001 发表于 2023-9-27 15:33:26

话说回来,如果往数组里插入点别的东西,嘿嘿,可不能这么干
页: [1]
查看完整版本: 视频播放之HLS赏析之坚持坚持再坚持