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

tt27.tv
直播系统解决⽅案-搭建你⾃⼰的直播平台
背景
当下,视频直播⾏业在中国逐渐⾛红。在刚刚过去的2015年,视频直播成为互联⽹⾏业最抢眼的领域之⼀。从游戏到秀场,从传统的⽹页端到移动互联⽹,各⼤直播平台包括⽃鱼、熊猫tv、虎⽛战旗还有纯移动端的印客、易直播等,雄割据。⾔归正转,毕竟本⽂是⼀篇技术博客,接下来让我们从技术的⾓度分析如何搭建⼀个⾃⼰的直播平台。
流程图
⾸先让我们看⼀下直播整体流程。
⾸先是直播视频采集端,由主播通过摄像头⼿机等采集设备,采集视⾳频流,编码后采⽤RTMP协议[^RTMP]推流到直播流服务器。这⾥采⽤H.264[^H.264]编码对视频流进⾏编码,使⽤AAC[^AAC]对⾳频流进⾏编码,采⽤这两种编码的原因是hls协议[^hls]要求使⽤这两种编码。接下来直播服务器会对从采集端推送的流进⾏⼀定的处理。⽐如,hls协议会将视频流切⽚成⼀个个的TS视频⽂件缓存在服务器中,同时⽣成⼀个m3u8⽂件记录了视频流中的包含的TS⽂件。cvd刀具
熔断器盒
之后如果有播放器请求某⼀个直播链接,服务器会使⽤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等录屏软件进⾏录屏,通过⼿机摄像头采集。由于⽬前户外直播和移动互联⽹很⽕,所以我们就选择实现在安卓设备上通过摄像头采集视频流(其实是因为我是写安卓的= =)。
为了实现这⼀功能,我们使⽤了⼀个开源项⽬它包含了⼀些在计算机视觉领域应⽤⽐较多的库,我们主要使⽤的是它的FFMpeg库。使⽤FFMpeg的FFMpegFrameRecoder类,我们能够⽅便地将从android摄像头采集到的帧传输到服务器。具体的通过Camera和FFMpeg推流到服务器的实现请看我们的另⼀篇⽂章。另外FFMpeg也⽀持H.264和AAC编码。
稀土硅铁合金直播流服务器
关于直播服务器,我们选择使⽤我们中国⼈开发的⼀个开源项⽬——,它⽀持RTMP/HTTP/RTSP等协议的流输⼊,⽀持
RTMP/HDS/HLS/HTTP等协议的流输出,同时它也⽀持集。给作者点赞。
关于srs的安装和使⽤可以直接看它在github上的wiki,这⾥不再赘述。需要注意的⼀点是该项⽬在centos 6.x 和ubunut12.x上能正常编译通过,但是在⽐如我使⽤的ubuntu14.04上会有⼀些依赖包的缺失。所以为了⽅便考虑的话,读者可以在centos和ubuntu12.x上进⾏test。
播放器
我们在试验的过程中,使⽤多种播放器和库在全平台实现了rtmp和hls的播放。在⽹页端使⽤了,在安卓端使⽤。具体的实现请看我们的另外⼀篇
总结
当然本⽂中的解决⽅案只是最简单的,对于直播服务器集,直播间的创建和管理,直播间直播密码和权限,内容分发⽹络CDN都没有进⾏深⼊的研究。但是通过本实验性项⽬,我认为对于我们了解整个直播的业务流程还是很有帮助的。

本文发布于:2024-09-24 03:22:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/135904.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:直播   采集   服务器   摄像头   实现   直播间
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议