[直播源码]直播源码如何搭建一个属于自己的直播平台?

  现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览

器 收看。但是,你知道直播平台后面的技术和实现原理码?

正好去年过年的时候,一个朋友破解了AirPlay和Chromecast协议,然后开发了一套技

术能够截获和播放任何手机(iOS或是Android)屏幕上的任何内容。想到的第一个应用是做

一个 直播的直播服务 。比如,通过屏幕直播,你可以邀请朋友看你正在看的直播的电影,

球赛,演唱会,晚会,不管是免费的还是付费的。当初的想法是将屏幕的内容,通过

AirPlay或Chromecast,推送到后台服务器,然后,受邀的朋友就可以从浏览器或是其它视

频播放器观看了。为此,我们搭建和开发了一个直播平台,现在把我们实现的过程记录下来

和大家共享。首先,视频有它的播放协议。原则上,RTSP,RTMP,HTTP都可以做直播和点播

,但一般做直播用RTSP和RTMP,做点播用HTTP。我们选用的是RTMP协议。

RTMP(Real Time Message Protocol/实时信息传输协议)是应用层协议,靠底层传输层协

议(通常是TCP)来保证信息传输的可靠性的。在TCP链接建立后,RTMP协议也要客户端和服

务器通过“握手”来建立RTMP Connection,然后在Connection上传输控制信息。RTMP协议

传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性

,发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message

,也可能是Message的一部分,在接受端会根据Chunk中包含的data的长度,message id和

message的长度把chunk还原成完整的Message,从而实现信息的收发。

我们看看两个常用的视频服务。一个是由客户端向服务器发起请求推流到服务器,这个就是

直播的播放服务.另一个是由客户端向服务器发起请求从服务器端接受数据,可以多次调用

,这就是播放服务。RTMP是直播后面的协议,有很多的开源软件实现了,细节我们不再细说

。下面,我们看看怎么搭建后台服务系统。

直播客户端(后面我们要介绍的OBS)将实时视频推送到NGINX的RTMP模块。RTMP模块会根据

配置将视频流转换成HLS文件。这时,HLS文件可以使用两种模式播放。一是点播VOD模式,

下载当前时间点可以获取到所有index文件和ts文件,并播放。这种模式允许客户端访问全

部内容,不一定是实时内容。二是Live 模式,实时生成m3u8和ts文件。它的索引文件一直

处于动态变化的,播放的时候需要不断下载index文件,以获得最新生成的ts文件播放视频

。一般来说,实况直播时,会有一些延时。下面,来看一个JS实现的HLS player,嵌入到支

持HTML5的浏览器就可以播放HLS文件。

基于上面描述的技术和开源系统,我们用PHP实现了一个简单的支持多用户的直播平台。

用户可以注册,登录,follow/unfollow,评论,标签,收看,直播(每个用户有自己的直

播密钥),等等。直播的精髓都应该讨论到了,如果将系统sharding,分层,SOA化,负载

均衡,cache,就可以搭建出一个可扩展的大规模的直播平台。

为了让更多的直播人拥有属于自己的直播平台和为每一位直播人打造一个直播梦想作为理

念,现在的直播软件源码有了更多有趣新颖的功能:游戏直播间、一对一直播、短视频、私

密直播间、夺宝游戏等等,支持各种二次开发等等。


微信咨询

客服热线

19888874242

电话咨询

QQ咨询