这十年是音视频快速发展的十年,从互动娱乐和电商直播,到互联网会议和在线教育,最近火热的元宇宙,音视频是基础能力之一。
从直播间连麦场景出发,可以了解互联网音视频所涉及的技术,由此深入学习音视频的相关技术点,可以让自己建立完整的音视频技术体系,快速应用到线上业务中。
1、Introduction
2015年音视频直播迎来了大的爆发,典型的场景是互动娱乐和电商直播。2017年WebRTC迅猛发展,典型场景是互联网会议、在线教育、低延迟直播和互动。2021年开始炒元宇宙,音视频也是基础能力之一。
音视频的爆发性增长,是由于云计算、基础网络和智能终端的快速发展和完善。基础网络这十年是飞速发展,4G的广泛应用,宽带基本实现了全国犄角旮旯的覆盖。智能终端特别是智能手机的普及,中国进入移动互联网时代。信息的传递方式逐步可以使用更直观的音视频。
在这些纷繁复杂的音视频场景中,直播和WebRTC是互联网音视频的核心技术,主要的应用场景,都可以由这两个技术组合应用实现。直播间连麦这个场景,是直播和WebRTC两种技术的最佳结合。
从直播间连麦场景出发,可以了解互联网音视频所涉及的技术,由此深入学习音视频的相关技术点,可以让自己建立完整的音视频技术体系。
2、Prerequisites
前提条件,需要具备的知识点,或依赖的工具:
-
• 一台云主机,带公网IP。推荐云SRS[1],带有音视频服务器SRS的云服务器,腾讯云Lighthouse或CVM有云SRS镜像,其他云主机可以用宝塔安装。
-
• 有一定的软件开发基础,虽然设计了比较简单的入门场景,还是有部分场景需要移动端开发能力,以及Linux服务器的操作能力。
-
• [可选] 注册的域名,申请合法的HTTPS证书必须得域名,用于WebRTC推流;无域名只能使用自签名证书,操作麻烦些,也是可行的。
下面是实现直播连麦场景的步骤,从简单的场景入手,逐步实现直播连麦。
3、Step 1: Build a Live Room using RTMP and HLS
直播间连麦,我们首先需要搭建普通直播间,虽然没有连麦的能力,但是直播推流和观看是基本的能力。
由于普通直播非常完善,是最容易实现的一个场景,甚至不需要具备编程知识,使用现有的工具链就可以完成。
首先,我们下载推流的工具OBS[2],这是广泛使用的推流工具,网上有非常多的文档和视频教程,可以花时间了解下基本用法。我们选择Settings > Stream > Service(Custom)
,OBS的推流地址由两部分组成,一般直播平台都会给出来,例如:
-
• Server,推流地址,例如视频号的是:
rtmp://******.livepush.myqcloud.com/trtc_**********/
-
• Stream Key,推流密钥,例如视频号的是:
live_******?txSecret=******&txTime=******
然后,我们看直播平台。按照实现的难易程度,从容易到复杂,有三个方式可供选择:
-
• SaaS:直接使用现有的直播平台。好处:无难度,可直接大规模商用;不足:不可定制,无法了解直播原理。
-
• 开源方案:使用开源服务器搭建直播平台。好处:容易使用,可编程定制,能理解直播的原理;不足:需要搭建服务器,无法大规模使用。
-
• PaaS:使用直播云服务。好处:容易使用,有一定定制性,可直接大规模商用;不足:需要云账号,可能需要付费。
Note: 这章我们只介绍SaaS和开源方案,由于PaaS云服务包含了直播和连麦,我们放在后面统一介绍。
我们在SaaS平台上新建一个直播,不同平台会有审核或其他要求,达到要求后就可以创建直播,比如视频号[3]或B站[4],创建直播后就可以拿到OBS的两个推流参数。推流到SaaS后,就可以使用SaaS的客户端观看。比如视频号是可以转发到微信群和朋友圈,在微信上就可以观看了;比如B站是B站的App,也可以通过网页观看。整个直播的链路如下图所示:
OBS(主播) ---RTMP---> 视频号/B站平台 -----> 微信/B站App(观众)
SaaS做直播的好处是不用了解直播的细节,直接就能把直播做起来,用户也可以直接观看,当然也不能定制只能按平台设计的方式做直播,而且也不能自己部署服务器比如在学校或企业内部就无法部署一套视频号或B站的直播系统。
如果需要了解直播的原理,或者需要自己搭建直播平台,就可以选择使用开源方案。
直播开源方案,推流工具还是用OBS[5],使用方法也是一样的。但是我们需要自己部署服务器,也需要选择直播观看的客户端:
-
• 推流工具:OBS,vMix,芯象,腾讯会议等。
-
• 直播平台:云SRS,SRS,NginxRTMP等。
-
• 观看工具:Chrome浏览器,VLC等。
推荐使用云SRS,因为后面也可以用于连麦。最方便的部署SRS的方式使用云SRS[6],可以用腾讯云镜像一键部署,其他云或自己虚拟机可以用宝塔部署,具体请参考视频教程[7]。若愿意从代码编译和部署SRS,也可以参考SRS[8]。
部署好SRS后,可以使用OBS推流到SRS,地址一般比较简单,例如:
-
• Server:
rtmp://your-server-ip/live/
-
• Stream Key:
livestream
Note:若使用云SRS,则
Stream Key
中可能有鉴权字符,例如livestream?secret=******
,可以从云SRS的后台私人直播间
拷贝就可以。
开源方案的播放器