2016,直播很火。各大公司都推出了自己的直播平台,直播行业风生水起。不光传统的游戏、体育教育行业有了直播,连淘宝也有了购物直播。大型公司各种基础设施都比较齐全,搭建一套直播平台自然不在话下,但是如果普通企业,想自己搭建一套完整的直播平台,并不是一件容易的事,也不太现实。
互联网的精神在于分享和协作。并不是每件事都需要自力更生,亲力亲为,比如要搭建一个普通企业门户网站,你可以从github 上下载开源 cms ,然后部署到从 xx 云购买的服务器上就行了。很多事情,已经有人帮你做好了,直接付费使用就行,大多数情况下,这都是非常明智的做法。
直播也是一样,七牛,又拍等服务商都推出了直播解决方案(包含直播、水印、美颜、连麦等各种常用功能),通过使用这些服务,可以快速的搭建自己的直播平台。
先看看直播类产品的基本架构:
我们需要关注的是采集端和播放端主要逻辑:
采集端:
播放端:
下面,我以七牛直播云为例,完成一个从采集到播放的例子:
1.在七牛后台创建一个直播空间,按照提示一步步填写即可,这里不多赘述
2.直播空间创建好后,会得到一系列直播域名,按提示到域名提供商的后台配置好cname域名后,准备工作就完成了

3.创建一个直播流,也就是通常意义上的“房间”,我用的是七牛提供的PHP直播 sdk
当然也可以在七牛后台“直播空间->直播流管理”里面手工创建直播流。直播流创建成功后,会得到一个直播流 id,形如z1.aiddroid.room-100000000-1
<?php //创建直播流 define('QINIU_ACCESS_KEY', 'FuLBHI4-*****************'); define('QINIU_SECRET_KEY', 'qAcW9jJFReC2JZv-*******************'); //直播空间名 define('QINIU_PILI_HUB', 'live-aiddroid'); $credentials = new \Qiniu\Credentials(QINIU_ACCESS_KEY, QINIU_SECRET_KEY); $hub = new \Pili\Hub($credentials, QINIU_PILI_HUB); //房间名 $title = 'room-100000000-1'; // optional, auto-generated as default $publishKey = NULL; // optional, auto-generated as default $publishSecurity = NULL; // optional, can be "dynamic" or "static", "dynamic" as default $stream = $hub->createStream($title, $publishKey, $publishSecurity); # => Stream Object $data = json_decode($stream->toJSONString(), true);
4.查询直播流信息
<?php //查询直播流信息 define('QINIU_ACCESS_KEY', 'FuLBHI4-*****************'); define('QINIU_SECRET_KEY', 'qAcW9jJFReC2JZv-*******************'); //直播空间名 define('QINIU_PILI_HUB', 'live-aiddroid'); $data = []; //直播流 id $streamId = 'z1.aiddroid.room-100000000-1'; $credentials = new \Qiniu\Credentials(QINIU_ACCESS_KEY, QINIU_SECRET_KEY); $hub = new \Pili\Hub($credentials, QINIU_PILI_HUB); //直播流信息 $stream = $hub->getStream($streamId); $data = json_decode($stream->toJSONString(), true); //直播推流 url $data['rtmpPublishUrl'] = $stream->rtmpPublishUrl();
5.上面得到的rtmpPublishUrl即是直播推流 url,这个 url 也可以在七牛后台“直播空间->直播流管理”里面找到。把它配置到直播采集软件里,即可进行直播。这里,我使用的是 Android 平台下的 Larix Broadcaster直播app做演示,该软件也有 iOS 等其他平台版本。当然,你也可以使用其他类似软件
6.直播软件配置好后,需要配置直播播放页面,我使用的是 videojs这款开源的 HTML5 & Flash 视频播放器,把相应的直播播放url 配置到页面上即可,这些 url 可以在七牛后台“直播空间->直播流管理->直播流信息”里面找到,你也可以按照规则,自行拼装,这里是我的示例页面
RTMP:rtmp://pili-live-rtmp.aiddroid.com/live-aiddroid/room-100000000-1 HLS:http://pili-live-hls.aiddroid.com/live-aiddroid/room-100000000-1.m3u8 FLV:http://pili-live-hdl.aiddroid.com/live-aiddroid/room-100000000-1.flv
7.直播播放页面配置好后,就可以在上面提到的Larix Broadcaster里面点击红色按钮开始直播了!直播开始后,在直播播放页面上就能看到。下面是 Safari 中的直播效果

8.至此,从创建直播流,直播采集,直播播放的直播核心流程已经完成。剩下的就是专注自己的业务需求,完成剩下的工作。比如,开发直播礼物系统等等。