互动直播直播

关于直播、CDN、直播协议的学习总结

2019-07-29  本文已影响0人  billzheng

视频是怎么组成的

任何一个视频 Video 文件,从结构上讲,都是这样一种组成方式:

为了便于视频内容的存储和传输,通常需要减少视频内容的体积,也就是需要将原始的内容元素(图像和音频)经过压缩,压缩算法也简称编码格式。有编码器也就有相应的解码器,编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。


什么是视频直播?

直播就是将每一帧数据 ( Video / Audio / Data Frame ),打上时序标签 ( Timestamp ) 后进行流式传输的过程。

用简单的图来解释学习相关的知识点
image.png
待总结


影响视觉体验的直播性能指标
结合上面的指标,用户的体验诉求基本为:低延迟、高清流畅、极速秒开

CDN的学习

源站是指发布内容的原始站点。添加、删除和更改网站的文件,都是在源站上进行的;另外缓存服务器所抓取的对象也全部来自于源站。对于直播来说,源站为主播客户端。

缓存服务器是直接提供给用户访问的站点资源,由一台或数台服务器组成;当用户发起访问时,他的访问请求被智能DNS定位到离他较近的缓存服务器。如果用户所请求的内容刚好在缓存里面,则直接把内容返还给用户;如果访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,然后再返还给用户。

智能DNS是整个CDN技术的核心,它主要根据用户的来源,以及当前缓存服务器的负载情况等,将其访问请求指向离用户比较近且负载较小的缓存服务器。通过智能DNS解析,让用户访问同服务商下、负载较小的服务器,可以消除网络访问慢的问题,达到加速作用。

客户端即发起访问的普通用户。对于直播来说,就是观众客户端。

image.png

CDN与SD-RTN对比情况如下:

SD-RTN的优势如下:

直播中,主播如果要与用户交互,常见有两种方式:

由于连麦方式比较复杂,这里进行详细分析。

1. 多路RTMP流实现

前面提到,RTMP是目前主播中最常用的协议,使用RTMP协议,可以实现最简单的一种连麦方式,如下图。

image

当有连麦者时,则主播端和连麦者端,都分别推一路RTMP流到CDN,CDN再将这两路RTMP流发送给观众端,观众端将两路RTMP流合成为一个画面。这种方式的优点是实现简单,但缺点比较多:

这样看来,这种方式弊大于利,基本不可取。

2. 主播端与连麦者P2P

第二种方式,是主播端与连麦者之间使用P2P方式进行交互,然后主播端将自己和连麦者的视频进行合并,再推到CDN上,CDN再发送给观众端,如下图:

image

这种方式的优点有两个,一是主播和连麦者之间使用P2P,网络质量较好,延迟较小,保证了两者之间交互不会有非常大的延时;二是可以解决声音的干扰问题,消除回声。缺点是:

综合来说,P2P方式在一定程度上可以解决连麦的问题。

3. 服务器端合图

另外一种方式,是主播和连麦者都将视频推送到CDN中,然后CDN内部对这几路视频进行合图,再将其发送给观众端。如下图:

image

这种方式的优缺点如下:

优点

缺点

解决方案

使用前文中提到的SD-RTN方案,由于其延迟较低,主播和观众可以通过音频实时交互,而不会感到延迟过大而不自然。使用SD-RTN,可以很好的解决多路RTMP、P2P连麦、服务器端合图这几种方案的弱势,并且开发难度降低,合图布局等都可以很好的在客户端上进行控制。

具体SD-RTN的架构可以参考下图:

image

客户端均通过UDP连接SD-RTN架构服务,通过SD-RTN的就近接入策略,让使用者就近接入质量最好的数据节点,经过传输延迟和质量优化的最优路径,自动避免网络拥塞和骨干网络故障的影响,将数据发送给其他客户端。若有常规的长延迟旁路直播,则可以将主播与连麦者合成一路直播流,通过RTMP推到CDN,进行下发。连接这一路的观众,不能参与连麦互动,达到了最佳直播效果。
CDN部分文章摘自:https://mp.weixin.qq.com/s?__biz=MzI4MTY5NTk4Ng==&mid=2247489552&idx=1&sn=5c828588202090f214d467c8bb7584f1&chksm=eba41b8ddcd3929b1ef44a0d2fe62ea8267643177df6c50ceeeb512e4e7865afc303b35c1de1&m

上一篇下一篇

猜你喜欢

热点阅读