直播平台的通讯,可以分为上行跟下行两个部分。上行部分即直播端的视频信息以某形式协议形式传递给中传服务器。下行部分即用户播放端通过播放软件从中转服务器获取数据。
目前通用常规的解决方案中,上行部分采用ADOBE的rtmp协议进行上传的传递,中间的服务服务器部分,有商业及开源的几种不同解决方案,功能大同小异,性能指标以下行连接数、数据转发效率、低延时多路输出为参考标准。中转输出除支持RTMP协议外,目前的解决方案中,都提供了基于HTTP直播的HLS输出,该输出的时效性强依赖于上行视频流数据的参数设定。这也是目前基于HLS直播时延较长的主要原因之一。下行的播放部分,PC及移动端应用中,通过采集时效性较高的RTMP协议方案,而对于基于H5的直播则只能使用基于HTTP协议的播放方式了。
上行设备端的输出部分,基于PC的有OBS等。基于移动设备端,可以使用第三方开源设备直接进行有效直播通路的推流进行测试,常规推流软件中,都有对视频流的参数进行过小部分的优化,在非高安全需求的情况下,可以直接使用。专业设备部分,只需要配置支持RTMP推流的设备即。目前业务的支持RTMP推流的设备,都会绑定商家的推流地址,造成较高的绑定消费。另一种方案是使用转接头的方式转换成PC可识别信息,然后使用ADOBE的FLASHMEDIA ENCODERSERVER软件进行推流,该方案各环境都不相互绑定,可以有转自由的组合方式,唯一需要就是对软件本身的学习。基于飞行器的航拍设定,一般的较高端的飞行器都支持直播流的在线观看,可以直接将其可播放的直播流地址为会来源信号,进行上行推送。其它可供上行的数据还包括基于HTTP的直播流、基于UDP的直播流。
对上行视频数据的要求上,数据的格式、数据包的大小、视频源的码率、关键帧的间隔等都会影响到下行用户的的播放效果。所以对上行视频源的控制上,需要根据上行环境的网络带宽情况进行相应的调整来实现流的流畅。
中转设备环节,目前有比较多的开源解决方案,可根据实际情况进行选择。而对于商业化运作的系统来说,先期可完全使用CDN来解决该部分问题,只需要注意如下几个部分:1,CDN部点的情况,这个关系到,若直播局域不固定的情况下,只有最近网络接点才能够使上行的速度不存在问题,若无考虑这个问题,直播过程中的上行则成为整个直播通路中最麻烦的一个地方。2:鉴权接口,CDN的是上下行都收费,若没有相应的回源鉴权,那就无法控制流的来源跟输出,无法控制来源链路。3:断流接口,这个是关系到内容的,若无法控制,那后果就不可知了。除了以上几点外,还有一些关于直播加速的速度之类的跟效率有相关的性能问题等等。反正收钱的,最好的就是提供的功能越全越好了。
那相对,如果使用开源的方案的话,就需要考虑可能因为网络延时而带来的性能问题,除了这个之外,剩下的就同CDN需要提供的功能一样的功能问题了。目前的开源方案中,只需要进行小规模的二次开发都可以完全满足整个直播平台需要的功能及性能了。
那下行部分,基本就简单一些了,基于PC部分的只要使用FLASH播放RTMP即可。移动端部分都已支持基于HLS的直播功能。
更多的直播解决方案,还有待开发中。。