首页 > 编程知识 正文

如何建立自己的直播平台,怎么做一个自己的直播平台

时间:2023-05-06 14:08:23 阅读:172612 作者:3805

目前,视频广播行业在中国很受欢迎。 在过去的2015年里,视频广播已经成为互联网行业最受关注的领域之一。 从游戏到秀场,从传统主页到移动互联网,各直播平台包括斗鱼、熊猫tv、虎牙战旗、纯移动端刷客、直播等,群雄割据。 言归正传,毕竟本文是技术博客,接下来我们从技术的角度分析一下如何搭建自己的直播平台。

流程图先来看看整个直播的流程。

首先在直播视频采集端,播音员通过摄像头手机等采集设备,对声像流进行采集和编码,然后采用RTMP协议[^RTMP]流媒体传输到直播流媒体服务器。 这里,我们使用H.264[^H.264]编码对视频流进行编码,并使用AAC[^AAC]对音频流进行编码。 使用这两种编码的原因是,hls协议[^hls]需要同时使用这两种编码。

然后,实时服务器对从收集方推送的流执行一定的处理。 例如,hls协议将视频流切片并在服务器上缓存各个TS视频文件,同时生成记录视频流中包含的TS文件的m3u8文件。

然后,当播放器请求实时链接时,服务器使用RTMP或hls协议向播放器推送流。 那么,应该根据情况选择这两个协议吗? 首先,需要明确的是,这两项协议各有优缺点。 如下所示。

RTMP hls Company Adobe Apple平台支持FlashPlayer

等待几个web端的播放器

针对移动设备的Vitamio Apple产品的本机支持、

支持Android3.0或更高版本的本机桌面浏览器必须使用第三方库,JWPlayer的延迟时间约为3秒。 实时性高因TS的长度而异,但一般会有10s以上的延迟。 在要求实时性的情况下,认为使用RTMP比较好。 在网页方面使用RTMP比较好吧。 因为Flash Player是本机支持的,而且大多数浏览器都安装了Flash Player。 如果移动端对实时性要求不高,最好采用hls。 因为ios中包含3.0以上的Android,本机支持hls协议。 这里根据以上三个步骤的具体实现分别进行说明。 为了篇幅,将一些内容放入子报道中。

视频采集和编码视频采集有电脑摄像机、OBS等录像软件进行录像画面,手机摄像机采集等多种方法。 现在室外直播和移动互联网很受欢迎,所以我决定用安卓设备使用摄像头收集视频流(其实因为我在写安卓==)。

为了实现这个功能,我们使用了开源项目javacv。 javacv在计算机视觉领域包括许多库,主要使用FFMpeg库。 使用FFMpeg的FFMpegFrameRecoder类可以轻松地将从android摄像机收集的帧传输到服务器。 具体来说,要实现通过Camera和FFMpeg向服务器推送,请参阅另一篇文章Android使用FFMpeg向服务器实现推送视频的实时分发。 另外,FFMpeg也支持H.264和AAC代码。

至于直播流服务器,我们选择使用我们中国人开发的开源项目——srs。 它支持RTMP/HTTP/RTSP等协议的流输入,rtmp/Hitachi/HLS/http等协议的流输出,还支持集群。 对作者给予赞扬。

关于srs的安装和使用,可以直接看到github上的wiki,但在此不赘述。 需要注意的是,虽然可以在centos 6.x和ubunut12.x上成功编译此项目,但例如,在我的ubuntu14.04上,存在依赖包丢失。 所以为了便于思考,读者可以在centos和ubuntu12.x上进行test。

播放器在实验过程中,使用多种播放器和库在全平台实现了rtmp和hls的播放。 网站方面使用了videojs,安卓方面使用了vitamio。 具体实现请查看web端和移动端如何播放rtmp和hls视频流

当然,本文的解决方案是最简单的,对直播服务器集群、直播机房的创建与管理、直播机房的直播密码与权限、内容发布网络CDN都没有深入的研究。 但是,我想通过这个实验性的项目,会有助于我们理解整个直播的业务流程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。