实战直播平台开发之初窥门径(一)
前几天,接到一个需求,需要构建一个简单的直播平台,这也是第一次接触到直播方面的开发任务,带着学习与挑战的精神决定记录下来这次开发的全过程。
经过几番查阅资料,对于如何构建一个直播平台有了一些初步的概念。
1、协议
首先来说说直播的协议,在查阅资料的过程中发现以下三种普遍应用的协议。
- RTMP(Real Time Messaging Protocol)
- RTSP(Real Time Streaming Protocol)
- HLS(HTTP Live Streaming)
关于这三种协议,前二者是基于TCP/UDP
进行实时的数据传输,HLS
则是采用了HTTP协议
,具体的协议内容以及三者的优缺点,网上也有大把的资料,大家可以自行查阅。
2、流媒体服务器
有了协议则需要有实现了协议的容器,我们称之为流媒体服务器
- Nginx RTMP, Nginx的模块
- Red5, 基于JAVA开发的流媒体服务器
- Wowza, 国外商业的流媒体服务器软件产品
- SRS, 国人开发的支持RTMP/HLS协议的流媒体服务器
- EasyDrawin, 国产开源的流媒体服务器
当然除了上面这些还有众多提供流媒体服务的产商,诸如百度LSS,七牛云等等。
由于对Nginx比较了解,所以决定采用Nginx RTMP模块
来构建我的流媒体服务器,Nginx RTMP模块
不仅支持RTMP协议
,同时也可以支持HLS协议
,也能很好的通过调整配置文件进行水平扩展。
推流与拉流
接着说说推流和拉流,推流就是将我们的视频源推送到流媒体服务器上,拉流则是从流媒体服务器上拉取视频流信息。也就是说,我们的主播需要能够进行推流的工具,而观众则需要一个能够进行拉流的播放器。
测试工具
这里介绍两个我们在测试流媒体服务器时可以用到的两个软件
推流软件:OBS,同时支持Window/OSX的推流工具
播放器:VLC,同样可以在Window/OSX平台下运行的播放器,支持各类直播网络传输协议。
虽然有了以上两种工具,但是对于ios、android、网页端我们可能都需要单独去开发相应的推送和播放应用。
总结
到这里,我们对于如何去构建一个直播应用已经有了一个初步的概念,首先需要一个流媒体服务器,主播需要推送软件将视频源推送至流媒体服务器,观众则通过播放器像流媒体服务器拉取视频信息进而观看。
未完待续...
码字很辛苦,转载请注明来自雨林寒舍的《实战直播平台开发之初窥门径(一)》
2017-06-19
编程语言
评论