随着最近2年直播类产品大火,越来越多的直播产品进入公众视线,诸如美女直播、新闻直播、教育直播、游戏直播、风景直播等众多繁杂类目的直播产品层出不穷,而这些直播在技术实现上有哪些共通之处,存在什么差异,如何更好的结合场景实现系统功能的完善、稳定、可扩展,都是技术人需要关注和克服的要点。由于之前在青果项目负责后端设计工作的关系,对视频类产品在直播&录制后端设计方面有一些实践和思考,这里做一些阐述和小结。
直播与协议的选择
在直播视频流数据流转的过程中,需要经历视频编码、传输/转码、解码等多端处理,而具体的处理都需要按照约定的视频协议来进行。对视频协议的选择,需要结合产品的需求场景,充分考虑协议的效率、通用性、安全性、可扩展性。可以说协议是视频类产品的技术基石和核心所在。视频协议种类繁多,这里以目前业内常用的几种协议为例进行阐述。
RTMP(Real Time Messaging Protocol)—— 协议的基本介绍可以参看百度百科词条。之所以把它放在首位,是因为它是目前使用较多的通用视频协议。简单来说,RTMP协议从视频编码、视频解码、转码等在各平台都有较多的工具和框架支撑,视频流方式传输保证其低延时得以保障,而CDN厂商对该协议的成熟支持则让它成为在海量直播请求与带宽压力下的优秀协议选择。那么,RTMP就真的无敌寂寞?并不能这么说。在项目实践中,我们发现了该协议不那么美的方面:
- 协议本身偏高级。RTMP属于TCP