笔者是做短剧应用的,前段时间小伙伴们遇到了一个非常诡异的播放问题,具体现象是:
根据以上问题的第三点可以知道,这应该跟不同机型的系统版本有关,系统版本低的可能是不兼容这个视频格式,导致播放异常
如果这个假设成立的话,那应该是每次播放第三集(异常剧集)都是播放不了的。
但是如果一开始就播放异常的那一集,反而是可以正常播放的,这可真是奇了怪。
目前结论是低版本系统有影响,但不是硬伤。
找了下资料,大概是系统高的版本有自适应的编解码能力。
那回到视频本身,为什么播放不了呢,肯定是编码不一样导致的,但是一开始我觉得可能性不是很大,原因:
经ffmpeg工具分析发现,第三集视频编码格式与其他剧集存在显著差异
第三集的编码格式为codecs="avc1.640033",其他集(第四集)都是avc1.640028,看了下原视频mp4格式的差异,第三集的分辨率比较高为4K高清,第四集为1080p
我这里我询问了一下客户端同学,是否复用了播放器,答案是复用了。
这就说通了。
播放器复用机制为:当用户滑动切换视频时,为节省资源会复用已有播放器实例。此时解码器参数将沿用首次播放时的配置,不会根据新视频源重新初始化。
根本原因
播放器复用机制 + 低系统版本MediaCodec参数锁定 → 解码器无法适配更高Profile-Level
现象解释
因为复用了播放器,且系统版本低,播放器又不会自适应,导致播放器在播放第一个剧集的时候,解码方式就固定了。
在播放过程中,上下两集编码格式发生了变化,因为Avc1.640028是比640033要低一个级别,支持不了4k高清,当低分辨率的播放器播高的剧集就报错了。
这也能说明为什么如果一开始就是播放的异常集是能播放成功的。
[紧急]第一时间对异常剧集降低了分辨率,和其他剧集保持一致
[重要]客户端在硬解码失败时,再次尝试软解码,最后使用重建播放器兜底
[常规]扫描存量的剧集,是否存在分辨率不一致的问题
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。