现在各行各业都会有直播,电商直播、旅游直播等等,都知道直播的流量大,仿佛直播已经成了“明星产品”,再加上一对一的私密性更强,因此更受大众喜欢,在开发一对一直播聊天系统时,也有很多细节需要注意,具体哪些方面,下面小编就一一分享给大家。
一、解析器和声明文件解释
基于HTTP的视频流中,很多都是从描述文件开始的。声明文件中一般包括媒体服务器所需要细节的元信息,即视频质量、语言字母等。解析器从XML文件中获取描述信息,然后再从这些信息中获取正确的视频信息,由于媒体服务器的类型很多,并不是所有的都能正确实现,所以解析器有时候可能需要去处理一些额外的实现错误。但是如果提取了视频信息,解析器就会从中解析数据,并用于构件流式的视觉图像且同时知道如何获取不同的视频片段。在一对一的直播流场景下,解析器必须以周期性的方式重新获取声明文件,以此获得最新的视频片段信息。
二、下载器
即包装处理HTTP请求原生API的模块。不仅可以用于下载多媒体文件,而且必要的时候也可以用于下载声明文件和密钥。下载器在处理网络错误和重试方面拥有着十分重要的位置,而且还能收集当前环境可用的带宽数据。一般使用HTTP协议。
三、流播放引擎
流播放引擎是解码器和API交互的中央模块,不仅能将不同的多媒体片段导入编码器,而且还能处理多码率的切换和播放时的差异性,比如卡顿时自动跳帧或视频切片之间的差异。
四、资源质量参数预估器
预估器可以从不同的维度来获取数据,比如跳帧数或视频片段的下载时间。可以将这些汇总起来用于估算用户的可用带宽和CPU的计算能力。
五、ABR切换控制器
这是多媒体引擎中最为关键的也是我们最容易忽视的部分。它可以读取预估器中输出的带宽和跳帧数,根据自定义算法对数据做出判断,决定播放引擎是否需要切换视频的音频或质量。其中比较困难的点就是频繁切换容易导致用户产生很差的使用体验。
六、DRM管理器
目前大部分的付费视频服务都是在DRM管理的基础上,且依赖于平台设备。而多媒体引擎中的DRM管理器是更底层解码器中解密API的包装。它会尽量屏蔽浏览器或操作系统去实现细节的差异性,这个管理器一般会跟流媒体引擎链连接在一起。
七、格式转换复用器
每个平台在编码和封包方面都有一定的局限性,这一特性容易导致有些视频片段需要在解码之前就进行格式转换。比如hls.js可以使用MSE的格式播放HLS的视频流。但是随着现代flash性能的提升,它所带来的性能损耗并不会给用户带来糟糕的使用体验。
一对一直播聊天系统开发是一个复杂过程,有很多细节需要特殊处理,因此开发是这些细节方面一定要着重解决,这对后期一对一直播程序很重要。