我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

视频直播平台的研发与架构实现

来源:网络 更新时间:2024-05-15 15:32:21

随着直播行业的蓬勃发展,直播类产品层出不穷,满足了各方人员的需求和互动。斗鱼、虎牙、抖音等直播平台也因此蓬勃发展。但是,要研发出视频直播平台,需要对直播协议有所了解,以及如何使用作者研发的surging去搭建直播平台。本文将简要介绍常见的直播协议,并探讨如何使用surging微服务引擎实现视频直播平台的架构。

视频培训地址: https://pan.baidu.com/s/13iOJlRnpsknm7NG6booUUw

社区版本开源地址: https://github.com/fanliang11/surging

常见的直播协议

在国内,常见的直播协议包括RTMP、HLS和HTTP-FLV。下面我们将逐一介绍这些协议。

RTMP,即实时消息传送协议(Real Time Messaging Protocol),是Adobe公司为Flash播放器和服务器之间音视频数据传输开发的私有协议。RTMP工作在TCP之上的明文协议,默认使用端口1935。RTMP主要优点包括对流媒体的优化、广泛的Adobe Flash支持、适合长时间播放以及较低的延迟。然而,RTMP也存在一些不足之处,如基于TCP传输、非公共端口可能被防火墙阻拦以及在iOS端需要使用第三方解码器才能播放等。

FLV(Flash Video)是Adobe公司推出的另一种视频格式,是一种在网络上传输的流媒体数据存储容器格式。而HTTP-FLV则是将流媒体数据封装成FLV格式,然后通过HTTP协议传输给客户端。相较于RTMP协议,HTTP-FLV能够更好地穿透防火墙,支持使用HTTPS加密传输,并且兼容支持Android和iOS的移动端。然而,HTTP-FLV的缺点包括流媒体资源缓存在本地客户端、网络流量较大以及不适合做拉流协议等。

HLS(HTTP Live Streaming)是苹果公司基于HTTP的流媒体传输协议,主要应用于iOS设备和Mac OSX,提供音视频直播服务和录制内容等服务。HLS最大的不同在于它并不是一下请求完整的数据流,而是在服务器端将流媒体数据切割成连续的时长较短的ts小文件,并通过M3U8索引文件按序访问ts文件,从而实现播放音视频。

流媒体协议 RTMP, HTTP-FLV, HLS 简单对比

RTMP协议为流媒体而设计,在推流中用的比较多,同时大多CDN厂商支持RTMP协议。HTTP-FLV使用类似RTMP流式的HTTP长连接,需由特定流媒体服务器分发,兼顾两者的优点。HLS作为苹果提出的直播协议,在iOS端占据了不可撼动的地位,同时也提供相应的支持。

如何架构实现

rtmp 协议架构图

调度服务网关是针对外网服务调用,提供基于rest查询流对应的服务器地址。直播终端通过调度服务网关获取rtmp服务地址,通过地址进行推流,rtmp服务获取到数据后,然后转推到其他的rtmp服务上,rtmp再把流推给订阅的客户端。

http-flv 架构图

以上是通过rtmp服务转推给http-flv订阅的客户端。

基于surging 微服务引擎如何实现

比如现在需要获取live1/livestream直播地址,那么首先可以通过地址/locate获取wanip外网地址,routepath是rtmp服务的服务路由路径,key是直播需要传过去地址livestream,然后rtmp端口定义为76,那么接下来获取的地址就是http://192.168.249.103:76/live1/livestream。

surging需要引用liveStream模块,这样就能支持直播协议rtmp,http-flv,hls(暂时还未实现),然后还需要通过配置surgingsetting,配置如下:

然后可以通过 ffmpeg或者obs进行推流,以ffmpeg工具为例,可以输入以下命令

ffmpeg -re -i 3.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ar 44100 -ac 2 -f flv rtmp://127.0.0.1:76/live1/livestream2

客户端采用PotPlayer进行播放,比如可以添加地址 rtmp://127.0.0.1:76/live1/livestream2 ,如果你部署了另外一台rtmp服务,设置的是65端口,那么可以添加 rtmp://127.0.0.1:65/live1/livestream2进行播放

可以支持一台N个推流,N个订阅播放,如下图:

总结

surging现在分为两个版本,一个是社区版本surging,一个是企业版本microsurging/SurgingVista。企业版不仅功能强大,支持流媒体服务等协议组件和中间件,还支持多语言定制化需求,完全可以满足各大公司的需要。如有意见,可以和作者联系。