背景

当下,视频直播行业在中国逐渐走红。在刚刚过去的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都没有进行深入的研究。但是通过本实验性项目,我认为对于我们了解整个直播的业务流程还是很有帮助的。

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

  1. 直播系统解决方案:直播平台如何开发搭建

    2019独角兽企业重金招聘Python工程师标准>>> 当下,直播依然非常的火爆,想要分羹的人也是非常多,看到这么充满激情的直播市场,免不了一些从事开发编程人员对直播的进一步开发和研 ...

  2. 商城直播系统怎么搭建

    说到商城,很多人眼里的商城就是卖实物产品的,例如卖衣服.卖鞋子.卖裤子.卖家具.卖家电.卖生活用品等等,然而实际上,现如今的商城可以卖实物产品,也可以卖虚拟产品.虚拟产品包含的内容也很多,有咱们传统的 ...

  3. 视频直播系统解决方案—是基于声网SDK实现的

    "在2019年5G创新发展峰会暨中国联通全球产业链合作伙伴大会上,中国联通董事长王晓初正式宣布联通5G实验网开通." 伴随5G的到来,网络流畅度的提升,视频直播系统将持续火爆,视频 ...

  4. 直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践

    本文原题"百度直播消息服务架构实践",由百度APP消息中台团队原创分享于"百度Geek说"公众号,为了让文章内容更通俗易懂,本次已做排版优化和内容重新划分,原文 ...

  5. 【解决方案】GB28181协议视频智能安防监控系统EasyGBS搭建生态农业大棚安全直播有何优势?

    一.背景分析 食品安全问题关系到广大人民群众的身体健康和生命安全,关系到经济发展和社会稳定,历来受到高度的关注与重视.然而近年来食品安全问题日益突出,无法将实时监察管理信息传递到普通市民手中,真正在食 ...

  6. 多校区网络直播系统解决方案

    多校区网络直播系统方案以直播编码器.AuraStone固态流媒体系统.视频汇聚系统为核心所搭建的一套基于IP网络的音视频多地域直播.点播.录制.回看的系统解决方案. 高效快捷的网络直播编码器通过全能视 ...

  7. 中小学学校视频直播系统怎么搭建

    学校电视台.会议直播.红领巾广播站.公开课直播.活动直播这些视频直播活动对提高学校的教育质量和学生的素质有着很大的帮助,学生家长也可以通过这种方式更好的了解学校.然而现在由于软硬件价格都比较高,所以怎 ...

  8. 网络视频直播系统,搭建直播服务器环境

    搭建网络视频直播系统SRS服务器 基于源码的方式在Linux中安装srs服务器. 使用git克隆源码. git clone https://gitee.com/winlinvip/srs.oschin ...

  9. 网络直播系统的架构,基础版直播间搭建

    直播行业从2013年发展至今,行业逐步规范,功能逐步增加,前几天,斗鱼直播平台宣布自己又获得了一轮融资,此次融资金额近40亿,那么大家想不想知道网络直播系统的架构呢?本文将从三个版块讲述一个简单的网络 ...

最新文章

  1. 【Codeforces】920A Water The Garden(浇花)
  2. python代码创建数据库_如何使用python ORM创建数据库表?
  3. 主题模型(topic models)总结
  4. 对称加密算法_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...
  5. linux之用 grep -r 关键字
  6. php mysql读取数组_php实现通用的从数据库表读取数据到数组的函数实例
  7. 论文浅尝 | 基于知识图谱的智能调研方法(DI佳作)
  8. drcom linux怎么运行,linux下使用drcom登录认证
  9. 实验四 lr0分析程序的设计与实现_试验机海外直播丨实现高精度CAE分析实验的材料评价案例技术介绍...
  10. Git报错:The file will have its original line endings in your working directory
  11. 广西大学计算机英语复试的内容,广西大学计算机专业的研究生复试时
  12. 北斗三号频点_定位精度超越GPS!紫光展锐推出支持北斗三代的四合一芯片
  13. 沈是计算机专业考研分数线,计算机#2017年东北大学计算机考研究生分数线_计算机考研究生复试分数线...
  14. 关于redis说法正确的是_还不会正确使用Redis?这几个技巧让你的程序快如闪电...
  15. C#利用Magick图片压缩
  16. Git 学习(篇六 --储藏与清理)
  17. maven仓库类型说明 hosted/proxy/group
  18. win10蓝牙开关不见了_山灵MW200评测:玩转高清蓝牙全编码,MMCX换线耳机必备升级线...
  19. 如何从JavaScript中的数组替换元素?
  20. 互联网数据标注员是做什么的?有什么发展前途吗?

热门文章

  1. 和导师的微信聊天翻车现场,你一定也经历过!
  2. vue瀑布流布局插件vue-masonry
  3. 网页版手游怎么选服务器,吃鸡怎么看自己选的哪个服务器 | 手游网游页游攻略大全...
  4. 餐饮店如何做活动吸引人
  5. 深度学习平台的搭建(anaconda-pytorch-pycharm)
  6. adb shell getprop/setprop
  7. python如何模拟键盘输入_Python模拟键盘输入和鼠标操作
  8. ArcGIS山脊线、山谷线和山顶点的提取(附练习数据下载)
  9. 牛客网 SQL17 10月的新户客单价和获客成本
  10. 云时代,网络攻击已经“鸟枪换炮”,你的企业安全还在按兵不动?