云导播台的设计和实现--基于golang的livego rtmp服务器

来源:互联网 发布:c 数据加密 不可复制 编辑:程序博客网 时间:2024/04/29 07:20

一、什么是云导播台

提供对多直播流rtmp或http-flv在直播过程中,实时进行流切换。举例,有多个直播rtmp源的时候,对源动态、实时进行选择,将其中一路直播出来,显示给观众。

二、什么是livego

livego是基于golang开发的rtmp服务器。这里一个简单的云导播台就在livego的框架上进行开发。

三、实现的云导播台功能列表

  • rtmp流服务器主动拉取多路直播流;
  • 拉取多路直播流指: rtmp流,http-flv流;
  • 通过http选举,对拉取到的多份流进行动态选择,选择到的流再推送到上游;

四、云导播基本框架

这里写图片描述
如上图:

* http控制模块
控制客户端,通过发送http命令,触发:
多个拉流操作: 拉取多个不同的源流
本地拉流模块,选取其中一个模块拉取后,在推送到远端;
* 拉流模块
负责拉流,并且把流推送到本地rtmp://127.0.0.1/xxx/xxxx
* 多流选择模块
根据http协议命令,选择某一个本地流rtmp://127.0.0.1/xxx/xxx进行本地拉取,并且推送到上游指定的rtmp地址
五、源码地址和wiki地址
livego源码: https://github.com/runner365/livego
livego的云导播wiki: https://github.com/runner365/livego/wiki/云导播台–多流切播