PHP之 直播开发后端需要做什么——准备工作

目前,直播应用于各大平台,可谓盛极一时。对于没有开发过的人,可能仅了解个大概,但谈到具体要怎么开发,可能就不知道其中梗概了。

作为PHP后端开发,一开始在接到“直播开发”的任务时,也是一头雾水,代码不知何起一脸懵逼。于是上网搜索,有人说,后端不需要做什么,这些大部分是APP端(安卓和IOS)的事,后端仅需要在表里存一下推、拉流地址,就行了。可真的是这样么,当我开发完百分之九十的东西之后,就直呼你大爷的,哪有那么简单啊。这些还好,有人给你贴出来,多少能做个参考,可再找,就真的寥寥了,要么是腾讯的广告文,要么是一些其他培训机构的广告,要么就是一些找开发直播的,总之,差强人意。没办法,没人,没资源,只能硬着头皮,抹黑上了。

从今年2月份开始,到现在,跌跌撞撞,配合APP端,总算搞了个大概,个中原委,也多少摸了一遍,故,这里将整个过程中,PHP需要处理的边边角角进行整理,希望对要开发直播的人,多少能有点帮助。说的,不妥的地方,勿怪!

直播的原理相关

直播,总体上说,是通过“推流”和“拉流”两个动作来完成的。而推流和拉流中间,还有一个流服务器,作为存储你音视频数据的中转站,用来存储直播数据,举个简单的例子,推流,就好比快递员给你送货,快递柜,就好比这个流服务器,暂时,给你存储,而你取快递,就好比拉流,你需要从快递柜,将快递取出来,拿到你想要的东西。大概就是这么个样子。

细致一点说,直播是由推流端、源站、拉流端三部分组成,推流端,比如直播的人通过手机APP、PC、小程序,进行直播,再让收看的人观看,就称为推流端,通过这些音视频数据采集工具,使用TRMP协议将直播人的直播数据,推到源站,观看直播的人,再通过拉流的相关协议和地址,拉取直播人的直播数据,在播放端,比如手机、平板、PC上就可以观看了。

可能会有人问,那么多的直播,我是怎么看到我要看的那个直播的信息的?这个问题,也是我一开始疑惑的地方,后来,才知道,原来推流和拉流,它俩,就跟太极的阴与阳一样,是一对的,这里有个概念,“流”,推流会有推流地址,拉流会有拉流地址,这两个地址虽然不完全一样,但是,他们对应的流是一样的,换句话说,你之所以能开你家门上的锁,是因为,你有跟它配对的钥匙,也就是说,当你点开直播的时候,你是点击的直播的拉流地址,他在那边一直往你这个点推流,而你一直在这个点,拉流,那么,你就能一直看到他的图像和声音了。

推流和拉流的相关概念

推流,指的是把采集阶段封包好的内容传输到服务器的过程。

拉流,是指服务器已有直播内容,用指定地址进行拉取的过程

主流的推送协议和优缺点

RTMP

RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写,是Adobe公司为Flash/AIR平台和服务器之间音、视频及数据传输开发的实时消息传送协议。RTMP协议基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。

不过RTMP有着一个最大的不足——不支持浏览器,且Adobe已不再更新。因此直播服务要支持浏览器的话,需要另外的推送协议支持。

HLS

Http Live Streaming是由Apple公司定义的基于HTTP的流媒体实时传输协议。它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。

分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。

传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。

由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短。

WebRTC

WebRTC(Web Real-Time Communication),即“源自网页即时通信”。WebRTC是一个支持浏览器进行实时语音、视频对话的开源协议。WebRTC的支持者甚多,Google、Mozilla、Opera推动其成为W3C推荐标准。

WebRTC支持目前的主流浏览器,并且基于SRTP和UDP,即便在网络信号一般的情况下也具备较好的稳定性。

此外,WebRTC可以实现点对点通信,通信双方延时低,此外,WebRTC可以实现点对点通信,通信双方延时低,是实现“连麦”功能比较好的选择。

腾讯云OR阿里云,挑一个吧

了解了大致原理与一些基本概念,那么,接下来,就得就平台进行选择了,目前,直播比较成熟的第三方平台有:腾讯云,阿里云,网易云信,七牛云,金山云等。我们不可能自己搞一个,当然,财力雄厚的,另当别论。对于,普通的公司,从这几个成熟的产品中,选择一个,还是比较明智的选择,毕竟人家是专业的,花钱就花钱吧,相比,让你自己搞一个,给人家的服务费可能就是九牛一毛。

目前,比较出名的直播,龙珠、小程序、斗鱼使用的是腾讯云;全名直播、好未来、淘宝使用的是阿里云;网易云课堂使用的是网易云;熊猫直播、龙珠使用的七牛云;今日头条使用的是金山云;陌陌、花椒、狼人杀、B站使用的是声网。其他的,就不说了。

反正,就功能点而言,腾讯云和阿里云相对而言,较优,毕竟人家的实力在那放着呢。不过,其他的,也是百家争鸣,各有长处,存在,即有道理。

相比其他,腾讯云有一个最大的特点,就是支持“录屏推流”,也就是可以录播,将直播录制下来,进行二次回放。而其他的第三方,都没有此功能,因此,我们选择了腾讯云,是的,我们的业务有录播的功能。

至于直播连麦、多主播互动、IOS 安卓 小程序的支持等等的,就根据实际的业务去选择,即可。业务不同,需求不同,选择就不同。

使用腾讯云需要做哪些准备

1、开通云直播

首先,注册腾讯云账号,进行实名认证;然后,进入 腾讯云直播服务开通页,勾选同意《腾讯云服务协议》,并单击【申请开通】即可开通云直播服务。

注意:
云直播服务申请开通成功后,会赠送20GB国内播放流量免费体验使用。切记,吃白食,欠费了,就没法使用云直播服务了,建议提前买好相应的套餐,免得断粮饿肚子。

2、域名准备

开通腾讯云直播以后,紧接着,你就需要准备域名了,你可以购买一个域名,从阿里还是腾讯,然后,做两个二级域名,一个做推流域名,一个做拉流域名,这是前提,而且,切记,一定得提前买,因为,备案审核可能会让你等好多天,还得提交相应的文件,等等,总是域名的购买最好不要等到水都烧开了,才去买米。

域名准备好,就完了吗,呵呵,都还没开始呢。登录腾讯云,进入【控制台】,进入【云直播】,左侧菜单【域名管理】,点击【添加域名】,选择【自有域名】,选择【确定】。注意,这里要添加两个自有域名:推流域名和拉流域名。

自有域名添加后,系统会为您自动分配一个 CNAME 域名,但 CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置,配置生效后,即可享受使用云直播服务。

这句话,可能不是那么的清晰明了,这么说吧,我使用的是在腾讯云购买的域名,在腾讯云这边添加后,还得去登录阿里云,进入阿里云的【控制台】,进行配置,具体步骤:

1)、登录阿里控制台,找到【云解析DNS】

2)、选择要解析的域名,进行【解析设置】

3)、进入之后,选择如果已经有你要的域名记录,直接点击修改;如果没有,点击【添加记录】也可。届时,会出现如下界面

重点记录类型,一定要选择CNAME,切记!!!
重点记录值,一定要写你在腾讯云添加完的推拉流地址的CNAME值!!!

点击【确定】即可!

4)、最后如下展示

5)、再去腾讯云的【域名管理】,刷新页面!

有一个已经成功了,另一个还未成功,怎么回事?

仔细检查,发现是没有填对,注意“尽量粘贴”,切勿“手敲”,避免出错!!

回到腾讯云【域名管理】,再次刷新页面,查看:

注意:如果出错后,更改还不成功的话,把阿里云的解析记录删了,重新添加一下,重新刷新,即可!
3、推流、拉流地址
域名配置好了,紧接着,就需要了解一下,推拉流的地址了。先举个简单的例子,如下:

推流:
rtmp://tes.push.live.com/live/wb_live_1055_13?txSecret=2faab724ed902e3af8ba2e96dea19d0c&txTime=5E5A8A7F

拉流:
http://tes.pull.live.com/live/wb_live_1055_13.flv?txSecret=86d0c0a9461019a9f47e86dd5e6c2b37&txTime=5E5A8A7F

注意,这两个地址,有一个相同的地方“wb_live_1055_13”,这个东西,就叫做流,前文也有提到,推流地址和拉流地址的流,必须相同,这样才能确保,看直播的人,看到主播的数据信息,否则,直播无从谈起。

那么,这两个地址,是系统生成的呢,还是,自己可以手动生成?答案是肯定的,我们自己可以生成。但是,得遵循腾讯云的规则。比如,推流的时候,只能使用RTMP协议,拉流的时候,可以有RTMP、FLV、HLS三种,这个,具体选哪个,可以根据录播模板来定,这里,我们选择的是FLV的。

至于生成推拉流的方法,腾讯云都有示例代码,具体可进入腾讯云控制台,在【域名管理】列表,随便选一个推流域名,进去,在详情【配置】页,往下拉到底,就能看到,具体的,可能还涉及到鉴权,签名等,这里,简单提及一下,另外,腾讯云文档里,也有,这里就不做赘述。

生成了推拉流地址,那么,我们如何知道自己生成的地址是否有用呢,腾讯云有一个工具,叫做“视频云工具包”,专门用来检测你生成的推拉流地址是否有效的:

具体的地址,没记住,从腾讯云相关文档中,能找到。用两个手机,下载之后,可以将生成的推流地址,给到其中的一部手机,在【移动直播】,【摄像头推流】,点开,输入推流地址,点击左下角的【三角播放键】,即可进行推流;然后,用另一个手机,打开该软件,【移动直播】,【直播拉流】,点击进入,在上面的地址栏输入拉流地址,点击左下角【三角按钮】,如果可以观看到另一部手机的直播画面,那就表示,你的推拉流地址生成没有问题!

当然,这块,腾讯云文档有详细说明,具体可以取腾讯云的云直播官方文档去了解细节。

这就是直播开发前的简单准备,可能实践中,要比此文涉及的更多一些,这里只做引路,细节上,就不多说,因为很多东西都得自己去揣测。好了,准备工作,就暂且说到这里,其他,后文再说。


--------------------------------------------------------------
参考:https://www.jianshu.com/p/7d0d452063d9
https://blog.csdn.net/github_37847975/article/details/90482402


The End!                                                                          2020/4/13 16:01:05
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章