直播系统解决方案-搭建你自己的直播平台

背景

当下,视频直播行业在中国逐渐走红。在刚刚过去的2015年,视频直播成为互联网行业最抢眼的领域之一。从游戏到秀场,从传统的网页端到移动互联网,各大直播平台包括斗鱼、熊猫tv、虎牙战旗还有纯移动端的印客、易直播等,群雄割据。言归正转,毕竟本文是一篇技术博客,接下来让我们从技术的角度分析如何搭建一个自己的直播平台。

流程图

首先让我们看一下直播整体流程。
直播流程图
首先是直播视频采集端,由主播通过摄像头手机等采集设备,采集视音频流,编码后采用RTMP协议[^RTMP]推流到直播流服务器。这里采用H.264[^H.264]编码对视频流进行编码,使用AAC[^AAC]对音频流进行编码,采用这两种编码的原因是hls协议[^hls]要求使用这两种编码。
接下来直播服务器会对从采集端推送的流进行一定的处理。比如,hls协议会将视频流切片成一个个的TS视频文件缓存在服务器中,同时生成一个m3u8文件记录了视频流中的包含的TS文件。
之后如果有播放器请求某一个直播链接,服务器会使用RTMP或者hls协议将流推送到播放器。那么我们该如果根据情况选择这两种协议呢。首先,我们需要明确一点,这两种协议各有利弊。如下所示:

  RTMP hls
Company Adobe Apple
平台支持 FlashPlayer 
等一些网页端的播放器 
移动端 Vitamio
Apple产品原生支持,
Android3.0以上原生支持 桌面机的浏览器需要使用一些第三方库,如JWPlayer
延迟 三秒左右的延迟,实时性较高 根据TS长度不同而不同,一般会有10s以上的延迟

综合以上因素,我们认为如果对实时性要求较高,那么使用RTMP会比较好。网页端使用RTMP会比较好,因为Flash Player原生支持,而大多数的浏览器都会安装Flash player。而在移动端如果对实时性要求不高,那么采用hls比较好,因为ios包括3.0以上的安卓都原生支持hls协议。接下来本文将根据以上的三个步骤的具体实现分别展开说明,为了篇幅考虑,我们会将一些内容放到子文章中。

视频采集与编码

视频采集可以有多重途径,比如通过电脑摄像头,通过OBS等录屏软件进行录屏,通过手机摄像头采集。由于目前户外直播和移动互联网很火,所以我们就选择实现在安卓设备上通过摄像头采集视频流(其实是因为我是写安卓的= =)。
为了实现这一功能,我们使用了一个开源项目javacv 它包含了一些在计算机视觉领域应用比较多的库,我们主要使用的是它的FFMpeg库。使用FFMpeg的FFMpegFrameRecoder类,我们能够方便地将从android摄像头采集到的帧传输到服务器。具体的通过Camera和FFMpeg推流到服务器的实现请看我们的另一篇文章Android使用FFMpeg实现推送视频直播流到服务器。另外FFMpeg也支持H.264和AAC编码。

直播流服务器

关于直播服务器,我们选择使用我们中国人开发的一个开源项目——srs,它支持RTMP/HTTP/RTSP等协议的流输入,支持RTMP/HDS/HLS/HTTP等协议的流输出,同时它也支持集群。给作者点赞。
关于srs的安装和使用可以直接看它在github上的wiki,这里不再赘述。需要注意的一点是该项目在centos 6.x 和ubunut12.x上能正常编译通过,但是在比如我使用的ubuntu14.04上会有一些依赖包的缺失。所以为了方便考虑的话,读者可以在centos和ubuntu12.x上进行test。

播放器

我们在试验的过程中,使用多种播放器和库在全平台实现了rtmp和hls的播放。在网页端使用了videojs,在安卓端使用vitamio。具体的实现请看我们的另外一篇如何在网页端和移动端播放rtmp和hls视频流

图片描述

总结

当然本文中的解决方案只是最简单的,对于直播服务器集群,直播间的创建和管理,直播间直播密码和权限,内容分发网络CDN都没有进行深入的研究。但是通过本实验性项目,我认为对于我们了解整个直播的业务流程还是很有帮助的。

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Feelink iShow v2.1 Beta版安装说明 iShow商业用户需签署使用协议,ishow用户不得利用ishow从事涉黄涉毒及其他违反国家法律法规的活动! 免费版用户需在申请免费用户后的3个工作日内,发送<<ishow使用协议>>到 邮箱:61677931@qq.com, 否则立即停止免费授权! <<ishow使用协议>>下载地址:http://ishow.xknet.net/1.doc 功能更新 1.新增了播放录像功能,房主可在自己的房间进行设置,支持flv和mp4格式 2.新增1对1的视频私聊,在房间内,可点击用户名查看,"邀请视频私聊" 3.新增首页对推荐主播的调用 4.新增对主播直播状态的检测,主页可实时显示,主播的直播状态 5.新增了对局域网内的完全支持,在局域网内视频可在后台全局设置中设置 6.新增房间密码功能,房主可在自己房间进行设置 7.新增对视频清晰度的控制,后台全局设置中可设置,清晰度越高,耗用带宽越大,反之同理 8.优化了后台逻辑,修复众多bug 9.优化了UC整合接口 10.优化了财付通接口逻辑 11.新增一套模板 12.新增提现功能 13.新增直播缓冲广告动画 14.新增房间的直播状态监测 15.优化了系统缓存文件的逻辑 安装环境: ASP+SQLServer 安装步骤: 1.解压压缩包,将所有文件上传到服务器 2.确保自己的数据库是MsSqlServer2000或2005 3.在浏览器中输入: http://你的域名/install 4.根据提示进行安装,确保自己的网站目录有可写入权限 5.安装完毕后,如果购买的是虚拟主机,请到虚拟主机web管理系统中,设置404错误页面,如果支持自定义404地址,请填写 /i/v2/room.html,如果不支持自定义404地址,只支持根目录404.htm的空间,请复制/i/v2/room.html文件到网站根目录,并修改根目录下的room.html文件名为 404.htm 即可 6.这是网站已经可以正常访问,网站会提示到m.xknet.net进行注册,正常注册后,您的ishow网站即可开启所有功能 如果有其他问题,请到bbs.xknet.net交流 测试使用网址:http://ishow.xknet.net

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值