• 展开微博窗口
  • QQ:52619941
  • 微信:cnmemory
  • 展开分类目录
  • 还没有账号?

Memory

实战直播平台开发之初窥门径(一)

前几天,接到一个需求,需要构建一个简单的直播平台,这也是第一次接触到直播方面的开发任务,带着学习与挑战的精神决定记录下来这次开发的全过程。

经过几番查阅资料,对于如何构建一个直播平台有了一些初步的概念。

1、协议

首先来说说直播的协议,在查阅资料的过程中发现以下三种普遍应用的协议。

  1. RTMP(Real Time Messaging Protocol)
  2. RTSP(Real Time Streaming Protocol)
  3. HLS(HTTP Live Streaming)

关于这三种协议,前二者是基于TCP/UDP进行实时的数据传输,HLS则是采用了HTTP协议,具体的协议内容以及三者的优缺点,网上也有大把的资料,大家可以自行查阅。

2、流媒体服务器

有了协议则需要有实现了协议的容器,我们称之为流媒体服务器

  1. Nginx RTMP, Nginx的模块
  2. Red5, 基于JAVA开发的流媒体服务器
  3. Wowza, 国外商业的流媒体服务器软件产品
  4. SRS, 国人开发的支持RTMP/HLS协议的流媒体服务器
  5. EasyDrawin, 国产开源的流媒体服务器

当然除了上面这些还有众多提供流媒体服务的产商,诸如百度LSS,七牛云等等。

由于对Nginx比较了解,所以决定采用Nginx RTMP模块来构建我的流媒体服务器,Nginx RTMP模块不仅支持RTMP协议,同时也可以支持HLS协议,也能很好的通过调整配置文件进行水平扩展。

推流与拉流

接着说说推流拉流推流就是将我们的视频源推送到流媒体服务器上,拉流则是从流媒体服务器上拉取视频流信息。也就是说,我们的主播需要能够进行推流的工具,而观众则需要一个能够进行拉流的播放器。

测试工具

这里介绍两个我们在测试流媒体服务器时可以用到的两个软件

推流软件:OBS,同时支持Window/OSX的推流工具
播放器:VLC,同样可以在Window/OSX平台下运行的播放器,支持各类直播网络传输协议。

虽然有了以上两种工具,但是对于ios、android、网页端我们可能都需要单独去开发相应的推送和播放应用。

总结

到这里,我们对于如何去构建一个直播应用已经有了一个初步的概念,首先需要一个流媒体服务器,主播需要推送软件将视频源推送至流媒体服务器,观众则通过播放器像流媒体服务器拉取视频信息进而观看。

未完待续...

码字很辛苦,转载请注明来自雨林寒舍《实战直播平台开发之初窥门径(一)》

评论