流媒体服务器(Media Streaming Server / Live Streaming Server)是在互联网上做视频点播和视频直播的基础支撑软件系统,如果您要在互联网上做视频播出应用,如在线课堂、视频通话、视频点播、视频资讯、短视频、网络直播、企业直播等,那您就需要使用流媒体服务器。
主流的流媒体服务器包括 NTV Media Server G3(云视睿博)、Wowza(Wowza Media Systems)、FMS(Adobe)等。
从项目项目开发的角度来讲,流媒体服务器将您在构建在线应用中的与视频相关的工作集中处理,使得您可以只关注业务细节而不用再去处理与视频相关的诸多技术细节,从而实现提高项目实施效率、降低项目实施风险的目标。
从产品作用上讲,流媒体服务器能够在一定的主机配置条件和网络带宽条件下提供流畅的、高并发的视频播出能力。因为流媒体服务器本身在视频播出方面做了诸多优化,如码流控制、IO优化、竞争处理等,使得充分利用硬件和网络能力,提供尽可能多的并发能力。
作为视频点播服务器,流媒体服务器提供的主要功能包括:接收视频文件上传、视频转码、视频存储和管理、视频播出地址发布、多终端适配等。大部分流媒体服务器会在转码结束后生成多种播出协议,可以面向网页、iOS终端、Android终端提供播出地址。
作为视频直播服务器,流媒体服务器提供的主要功能包括:直播流接收(如接收rtmp协议推流)、直播流转发和播出、发布直播地址给播放端、直播录制、生成回看地址等。大部分流媒体服务器会输出多种协议的直播地址,以适配不同终端的播放需求,这些播出地址包括:rtmp协议地址、http-flv协议地址、HLS地址等。
随着技术的发展,流媒体服务器的技术和产品也一直在不断的发展和演进,当前(2020年),视频播出技术发展的趋势包括:
1)高清视频为主(1080p、4K),高码率播出(>2Mbps);
2)H264依然是主要视频编码格式,VP9/H265在有些应用中也开始采用;
3)视频传输更多的采用http协议,Flash播放器逐步被淘汰;
4)采用WebRTC、Websocket协议进行视频播出的应用越来越多。
5)双向视频应用越来越多,在在线教学、会议直播等直播应用中成为标配。
附图: NTV Media Server G3采用WebRTC上行协议进行直播
当前主要流媒体服务器类表(含开源项目):
1)Nginx rtmp module (开源)
性能 高, 成熟度 中 ,完善度 低
一款NGINX的流媒体插件,开源项目(BSD-2-Clause License),视频直播服务器,提供RTMP直播流的接收和RTMP、HLS协议的播出。对于有流媒体研发经验的项目组,可以在此项目基础上进行扩展。开发难度和成本还是很大的,开发人员需要精通C语言,并熟悉Nginx模块开发方法。
2)crtmp server(开源)
性能 高, 成熟度 低 ,完善度 低
crtmpserver又称rtmpd,采用GPLV3授权。其主要作用为一个高性能的RTMP流媒体服务器提供视频直播服务。C++语言开发,代码结构比较清晰,可以在windows和Linux操作系统上编译和运行。经实测并发能力不错,能够满足大多数直播应用场景,缺点是只有直播,其他功能没有,如没有录制功能。
3)Wowza (产品化,美国)
性能 中, 成熟度 高 ,完善度 高
一款Java语言开发的流媒体服务器产品,产品成熟,功能相对齐全。由于是全英文版本,在购买、技术支持、售后等方面相对麻烦些,配置也比较复杂。宣传能达到10GB的吞吐能力,经国内爱好者实测,实际与宣传相差甚远,不建议使用。
4)NTV Media Server G3(产品化,国产)
性能 高, 成熟度 高 ,完善度 高
北京云视睿博研发的高性能流媒体服务器产品,产品成熟可靠,功能完善,在国内有较大的客户群,售后支持成熟靠谱。C++语言开发,整体性能非常好,大多数项目一台设备就满足要求了。缺点是售价偏高,应该是可以议价的。
5)Adobe Flash Media Server(产品化,美国)
性能 高, 成熟度 高 ,完善度 高
rtmp流媒体服务器的开山鼻祖,最早和最流行的流媒体服务器。在Rtmp协议的接收和播出上做的很好,早些年国内很多项目采用该服务器。但是随着其他竞争产品的崛起,以及Adobe对中国市场的忽视,目前国内很少有人再用了,以盗版为主,支持无保障。
6)SRS(开源,国产)
性能 中, 成熟度 中 ,完善度 低
一个采用MIT协议授权的国产的简单的RTMP/HLS 直播服务器,其核心的价值理念在于简单高效。经实测效果也可以,作者应该是有更好的职业规划,对这个项目更新并不积极。