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

当下,直播依然很是的火爆,想要分羹的人也是很是多,看到这么充满激情的直播市场,免不了一些从事开发编程人员对直播的进一步开发和研究,但就算是在直播这么“裸露”的状况下,不少人对于直播也是很是的懵懂,下面我就来给你们讲解一下如何搭建一个直播平台,直播系统的开发:

首先是直播视频采集端,由主播经过摄像头手机等采集设备,采集视音频流,编码后采用RTMP协议推流到直播流服务器。这里采用H.264编码对视频流进行编码,使用AAC对音频流进行编码,采用这两种编码的缘由是hls协议要求使用这两种编码。
接下来直播服务器会对从采集端推送的流进行必定的处理。好比,hls协议会将视频流切片成一个个的TS视频文件缓存在服务器中,同时生成一个m3u8文件记录了视频流中的包含的TS文件。

直播总体流程图以下:
java


以后若是有播放器请求某一个直播连接,服务器会使用RTMP或者hls协议将流推送到播放器。那么咱们该若是根据状况选择这两种协议呢。首先,咱们须要明确一点,这两种协议各有利弊。
RTMP
公司:Adobe
平台支持:FlashPlayer等一些网页端的播放器、移动端 Vitamio
延迟:三秒钟左右的延迟,实时性较高

HLS
公司:Apple
平台支持:Apple产品原生支持,Android3.0以上原生支持,桌面机的浏览器须要使用一些第三方库,如JWPlayer
延迟:根据TS长度不一样而不一样,通常会有10s以上的延迟

综合以上因素,咱们认为若是对实时性要求较高,那么使用RTMP会比较好。网页端使用RTMP会比较好,由于Flash Player原生支持,而大多数的浏览器都会安装Flash player。而在移动端若是对实时性要求不高,那么采用hls比较好,由于ios包括3.0以上的安卓都原生支持hls协议。


视频采集与编码
视频采集能够有多重途径,好比经过电脑摄像头,经过OBS等录屏软件进行录屏,经过手机摄像头采集。因为目前户外直播和移动互联网很火,因此咱们就选择实如今安卓设备上经过摄像头采集视频流。为了实现这一功能,咱们使用了一个开源项目javacv 它包含了一些在计算机视觉领域应用比较多的库,咱们主要使用的是它的FFMpeg库。使用FFMpeg的FFMpegFrameRecoder类,咱们可以方便地将从android摄像头采集到的帧传输到服务器。


直播流服务器
关于直播服务器,咱们选择使用咱们中国人开发的一个开源项目——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。
固然本文中的解决方案只是最简单的,对于直播服务器集群,直播间的建立和管理,直播间直播密码和权限,内容分发网络CDN都没有进行深刻的研究。因此若是你在直播平台开发搭建上仍是有太多问题的话能够找一家专门开发直播的公司作,好比像美丽播直播这种专门开发直播系统、直播平台的公司,不只可以减小成本还可以快速的就可以实现你的直播梦想。http://www.meilibo.net(美丽播)
android

相关文章
相关标签/搜索