直播平台怎么搭建?流媒体服务器是关键

2018-10-16 13:49:37 admin 1

当下,视频直播行业在中国属于流量大王,为此,视频直播行业在中国异常火爆。从游戏到秀场,从传统的网页端到移动互联网,各大直播平台包括斗鱼、熊猫tv、花椒、映客等群雄割据。言归正转,毕竟本文是一篇技术博客,接下来让小编从技术的角度分析一下怎么创建直播平台。首先让我们看一下创建直播平台整体流程

首先直播视频采集端,由主播通过摄像头手机等采集设备,采集视音频流,编码后采用RTMP协议推流到直播流服务器。这里采用H.264编码对视频流进行编码,使用AAC对音频流进行编码,采用这两种编码的原因是hls协议要求使用这两种编码。

w1.jpg

接下来直播服务器会对从采集端推送的流进行一定的处理。比如,hls协议会将视频流切片成一个个的TS视频文件缓存在服务器中,同时生成一个m3u8文件记录了视频流中的包含的TS文件。之后如果有播放器请求某一个直播链接,服务器会使用RTMP或者hls协议将流推送到播放器。

视频采集可以有多重途径,比如通过电脑摄像头,通过OBS等录屏软件进行录屏,通过手机摄像头采集。由于目前户外直播和移动互联网很火,所以我们就选择实现在安卓设备上通过摄像头采集视频流。

为了实现这一功能,我们使用了一个开源项目javacv它包含了一些在计算机视觉领域应用比较多的库,我们主要使用的是它的FFMpeg库。使用FFMpeg的FFMpegFrameRecoder类,我们能够方便地将从android摄像头采集到的帧传输到服务器。具体的通过Camera和FFMpeg推流到服务器的实现。请看我们的另一篇文章Android使用FFMpeg实现推送视频直播流到服务器。另外FFMpeg也支持H.264和AAC编码。

w2.png

直播流服务器

关于直播服务器,我们选择使用我们中国人开发的一个开源项目——srs,它支持RTMP/HTTP/RTSP等协议的流输入,支持RTMP/HDS/HLS/HTTP等协议的流输出,同时它也支持集群。关于srs的安装和使用可以直接看它在github上的wiki,这里不再赘述。需要注意的一点是该项目在centos 6.x 和ubunut12.x上能正常编译通过。

播放器

我们在试验的过程中,使用多种播放器和库在全平台实现了rtmp和hls的播放。在网页端使用了videojs,在安卓端使用vitamio。

PC端:

采用行业内主流的技术路线,基于Adobe的Flash Player做应用层开发,这也是当前最成熟时的技术路线。为了缩短开发周期,我们基于Adobe的OSMF播放器框架来做,开发周期控制在2个月以内比较可行。

Android端:

Android端的播放器开发我们首先考虑到的是终端的解码性能,因为解码框架有多个可选,比如FFMPEG、VLC、MediaPlayerAPI、Exoplayer等,从我们自身的熟悉程度和项目的可控性上考虑,最终决定采用google的Exoplayer做二次开发,开发周期可以控制在2个月以内。

iOS端:

iOS端的播放器也是基于同样的考虑,我们选择了苹果提供的VideoToolbox开发接口,通过它可以直接调用苹果处理器自带的硬件解码功能,这样可以大大降低设备的功耗,延长电池的续航时间。

总结

本文中的解决方案只是最简单的,对于直播服务器集群,直播间的创建和管理,直播间直播密码和权限,内容分发网络CDN都没有进行深入的研究。

从学习怎么创建直播平台到简单创建直播平台,以上就是小编简单创建直播平台的一段经历和收获的一点点经验,如果您有不同的见解或者想要了解一下直播平台,可以咨询我们官方联系方式。最新的市场动态还请关注宸旭科技。