当前位置:首页 > 实用技巧 >

播放器的x5内核是什么(x5内核和原生内核哪个流畅)

来源:原点资讯(www.yd166.com)时间:2023-06-12 09:32:00作者:YD166手机阅读>>

11、视频直播传输协议4:MPEG-DASH


MPEG-DASH这一协议属于新兴势力,和HLS一样,都是通过切片视频的方式进行播放

他产生的背景是早期各大公司都自己搞自己的一套协议。比如苹果搞了HLS、微软搞了 MSS、Adobe还搞了HDS,这样使用者需要在多套协议封装的兼容问题上痛苦不堪。

于是大佬们凑到一起,将之前各个公司的流媒体协议方案做了一个整合,搞了一个新的协议。

由于同为切片视频播放的协议,DASH优劣势和HLS类似,可以支持切片之间多视频码率、多音轨的切换,比较适合点播业务在直播中还是会有延时较长的问题。

播放器的x5内核是什么,x5内核和原生内核哪个流畅(17)

12、如何选择最优的视频直播传输协议


视频直播协议选择非常关键的两点,在前文都已经有提到了,即低延时和更优的兼容性。

首先从延时角度考虑:不考虑云端转码以及上下行的消耗,HLS和MPEG-DASH通过将切片时长减短,延时在10秒左右;RTMP和FLV理论上延时相当,在2-3秒。因此在延时方面HLS ≈ DASH > RTMP ≈ FLV。

从兼容性角度考虑:HLS > FLV > RTMP,DASH由于一些项目历史原因,并且定位和HLS重复了,暂时没有对其兼容性做一个详尽的测试,被推出了选择的考虑范围。

综上所述:我们可以通过动态判断环境的方式,选择当前环境下可用的最低延迟的协议。大致的策略就是优先使用HTTP-FLV,使用HLS作为兜底,在一些特殊需求场景下通过手动配置的方式切换为RTMP。

对于HLS和HTTP-FLV:我们可以直接使用hls.js和flv.js做做解码播放,这两个库内部都是通过MSE做的解码。首先根据视频封装格式提取出对应的音视频chunk数据,在MediaSource中分别对音频和视频创建SourceBuffer,将音视频的编码数据喂给SourceBuffer后SourceBuffer内部会处理完剩下的解码和音视频对齐工作,最后MediaSource将Video标签中的src替换成MediaSource 对象进行播放。

播放器的x5内核是什么,x5内核和原生内核哪个流畅(18)

在判断播放环境时我们可以参照 [url=[url=https://github.com/bilibili/flv.js]flv.js[/url]]flv.js[/url] 内部的判断方式,通过调用MSE判断方法和模拟请求的方式判断MSE和StreamIO是否可用:

// 判断MediaSource是否被浏览器支持,H.264视频编码和Acc音频编码是否能够被支持解码 window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');

如果FLV播放不被支持的情况下:需要降级到HLS,这时候需要判断浏览器环境是否在移动端,移动端通常不需要 hls.js 通过MSE解码的方式进行播放,直接将M3U8的地址交给video的src即可。如果是PC端则判断MSE是否可用,如果可用就使用hls.js解码播放。

这些判读可以在自己的逻辑里提前判断后去拉取对应解码库的CDN,而不是等待三方库加载完成后使用三方库内部的方法判断,这样在选择解码库时就可以不把所有的库都拉下来,提高加载速度。

13、同层播放如何解决



播放器的x5内核是什么,x5内核和原生内核哪个流畅(19)



电商直播需要观众操作和互动的部分比起传统的直播更加多,因此产品设计的时候很多的功能模块会悬浮在直播视频上方减少占用的空间。这个时候就会遇到一个移动端播放器的老大难问题——同层播放。

同层播放问题:是指在移动端H5页面中,一些浏览器内核为了提升用户体验,将video标签被劫持替换为native播放器,导致其他元素无法覆盖于播放器之上。

比如我们想要在直播间播放器上方增加聊天窗口,将聊天窗口通过绝对定位提升z-index置于播放器上方,在PC中测试完全正常。但在移动端的一些浏览器中,video被替换成了native播放器,native的元素层级高于我们的普通元素,导致聊天窗口实际显示的时候在播放器下方。

要解决这个问题,首先要分多个场景。

首先在iOS系统中:正常情况下video标签会自动被全屏播放,但iOS10以上已经原生提供了video的同层属性,我们在video标签上增加playsinline/webkit-playsinline可以解决iOS系统中大部分浏览器的同层问题,剩下的低系统版本的浏览器以及一些APP内的webview容器(譬如微博),用上面提的属性并不管用,调用三方库iphone-inline-video可以解决大部分剩余问题。

在Android端:大部分腾讯系的APP内置的webview容器用的都是X5内核,X5内核会将video替换成原生定制的播放器已便于增强一些功能。X5也提供了一套同层的方案(该方案官方文档链接已无法打开),给video标签写入X5同层属性也可以在X5内核中实现内联播放。不过X5的同层属性在各个X5版本中表现都不太一样(比如低版本X5中需要使用X5全屏播放模式才能保证MSE播放的视频同层生效),需要注意区分版本。

在蘑菇街App中,目前集成的X5内核版本比较老,在使用MSE的情况下会导致X5同层参数不生效。但如果集成新版本的X5内核,需要对大量的线上页面做回归测试,成本比较高,因此提供了一套折中的解决方案。通过在页面URL中增加一个开关参数,容器读取到参数以后会将X5内核降级为系统原生的浏览器内核,这样可以在解决浏览器视频同层问题的同时也将内核变动的影响范围控制在单个页面当中。

栏目热文

如何确定是否使用x5内核(x5内核加载失败修复步骤)

如何确定是否使用x5内核(x5内核加载失败修复步骤)

如果有人问我们手机上使用频率最高的app,那回答一定是「微信」了。「微信」作为月活用户超11亿的app,作用不仅仅是单纯...

2023-06-12 09:32:31查看全文 >>

播放器需要x5内核怎么解决(手机x5内核初始化失败怎么解决)

播放器需要x5内核怎么解决(手机x5内核初始化失败怎么解决)

[PConline 应用]玩朋友圈时是不是总感觉视频播放一卡一卡的?尤其是刚点开时,那卡得……几乎让人怀疑网速。其实这个...

2023-06-12 09:14:23查看全文 >>

x5内核加载失败修复步骤(腾讯x5内核加载失败)

x5内核加载失败修复步骤(腾讯x5内核加载失败)

为什么不使用原生的webview?最近公司的项目接入了webview,但是坑巨多无比,尤其是其内存泄露。所以我在想是否可...

2023-06-12 08:58:30查看全文 >>

变压器倍率计算公式(互感器倍率计算公式)

变压器倍率计算公式(互感器倍率计算公式)

变压器设备各性能参数的基本含义是什么?答:变压器主要技术参数包括:额定容量、额定电压及其分接头数值、额定频率、绕组连接组...

2023-06-12 09:16:35查看全文 >>

变压器计算软件(干式变压器计算软件)

变压器计算软件(干式变压器计算软件)

75个电气计算表格 40个计算小软件,内含公式直接套,3S轻松搞定随着时代的发展,电气工程逐步进入到各个领域,范围也越来...

2023-06-12 09:29:10查看全文 >>

系统内核和x5内核哪个好(如何确定是否使用x5内核)

系统内核和x5内核哪个好(如何确定是否使用x5内核)

作为与js交互的优化之一,今天讲一下如何集成腾讯X5。首先我们先了解一下TBS浏览服务:背景知识:1. TBS(腾讯浏览...

2023-06-12 09:12:08查看全文 >>

浏览器x5内核好不好(x5浏览器内核初始化失败怎么解决)

浏览器x5内核好不好(x5浏览器内核初始化失败怎么解决)

不知道大家在使用微信时有没有过这样的感觉,那就是用微信打开网页时感觉会比较慢,但是如果在浏览器上打开却要快上许多,这是怎...

2023-06-12 09:14:04查看全文 >>

为什么要关闭x5内核(x5内核加载失败修复步骤)

为什么要关闭x5内核(x5内核加载失败修复步骤)

说起微信,大家肯定不会陌生吧,作为用户数量已达11亿的移动社交工具,微信已经成为从最初的即时通讯App到现在覆盖通讯、社...

2023-06-12 09:07:16查看全文 >>

安装x5内核教程(安卓x5内核安装包下载)

安装x5内核教程(安卓x5内核安装包下载)

“事儿哥”每次给大家分享实用的小工具,都有一种众口难调的感觉!今天分享了看影视的app,留言中就有小伙伴想要看小说的,...

2023-06-12 09:05:32查看全文 >>

x5内核与cw内核哪个好(为什么要关闭x5内核)

x5内核与cw内核哪个好(为什么要关闭x5内核)

作者:billpchen,腾讯看点前端开发工程师译者:编译青春转发链接:HTTPS://mp.weixin.qq.com...

2023-06-12 09:31:35查看全文 >>

文档排行