书名:零基础搭建直播室与云直播平台
ISBN:978-7-115-54730-9
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 姚大庆
责任编辑 王峰松
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书首先介绍了视频流媒体直播的常见协议、构成环节,以及流媒体服务器的安装步骤,然后详细介绍了在不同的系统中安装SRS、MistServer等流媒体服务软件。接下来分享了一些与直播相关的实用工具软件以及这些软件的使用技巧,最后着重讲解了5个面向不同层次的直播网站的搭建和11个典型的适合网上教学及活动直播的综合应用案例。
本书适合需要用到网上直播的自媒体从业者、需要搭建网上直播课堂的学校老师、企事业单位的直播技术人员,以及其他对直播技术感兴趣的爱好者学习使用。
姚大庆老师在深圳广播电视大学从事数字媒体、教育技术、资源建设等方面的多项工作,敬业爱岗,兢兢业业。他制作的户外大屏幕宣传片令人惊艳;他拍摄制作的多部视频课件入选了国家开放大学精品在线开放课程和国家级精品开放课程;他主导设计的演播室、微课录制室成为了深圳广播电视大学的亮点。
他喜欢钻研业务,除了承担学校的摄影摄像工作,还利用闲暇时间开发了媒体资源管理系统,该管理系统用于存放照片和视频资源,成为了学校同事们常用的照片资源仓库。
2018年,深圳广播电视大学残疾人教育学院的“素描1”课程需要进行网上教学,该学院学生众多,并分布在全国各地。由于外地学员访问校内服务器时网络速度不够理想,因此他主动请缨,提出使用云直播的方案,并搭建了远程课堂,成功地进行了网上视频直播教学,深受师生欢迎。经过姚大庆老师不断开发改进,云直播在线课堂成为深圳广播电视大学主要的直播平台。
“功崇惟志,业广惟勤。”姚大庆老师把自己多年的视频直播和网站搭建经验凝聚成如今这样一本著作,离不开他在本职工作岗位上坚定目标、十年如一日的辛勤钻研和点滴积累。
本书的内容是他扎根实践、与时俱进、不断创新、苦心孤诣摸索总结出来的,具备很强的指导性和实战性。同时,本书也是视频直播这个领域里国内少有的专著,起到了引领直播行业的作用。对于从事教育技术的人员,本书还是通向远程课堂成功的“密钥”。
深圳广播电视大学正在建设满足深圳城市发展需要的一流城市开放大学,未来将继续打造“互联网+终身教育”的主阵地。姚大庆老师作为一位技术骨干,他的这本书集成了软件、硬件和网络等多个领域的技术,可以说是为深圳广播电视大学不断创新前进添加了一个美丽的注脚。
希望广大读者能够通过本书提升自己的技术,并从中汲取作者勤于钻研、勇于创新的精神力量,终身学习,终身受益。
胡新生
博士、教授
中国教育技术协会学术委员兼理事
广东省成人教育协会副会长
深圳市成人远程教育研究所所长
十几年前,我开始接触视频流媒体直播,起初用的是Windows Media,后来换成Flash Media,当时的视频普遍还是分辨率为352×288、码流为350Kbit/s这种很低的规格。
去年,有感于一些市场上销售的商业直播系统存在一些问题,如视频格式非主流不通用、软件代码闭源等,其已经无法满足新形式下的用户需求,经过不断尝试,我选用了开源免费软件和常规硬件搭建直播系统,根据不同的需求,总结了多种直播方案,并学习了PHP、JavaScript、Ajax编程技术,开发了简单实用的直播管理系统。
起初,我准备撰写一些直播推流案例的内部培训资料,后来觉得如果不了解流媒体服务器,可能不容易理解推流认证,于是又撰写了流媒体服务器的相关内容,再后来又感到如果不了解直播管理程序的编程思路,则无法对直播过程中出现的问题进行很好的处理……最终,我决定系统地写一本书。
本书针对视频直播的基础应用,不涉及高深的底层开发技术,适合具有一般计算机水平的读者阅读。虽然书中介绍的可能只是一些“雕虫小技”,但是希望它们能给读者带来实质性的帮助或启示。
在本书的写作过程中,我得到了人民邮电出版社王峰松编辑的热心指点,得到了同事、朋友和家人的鼓励与支持,在此一并表示感谢!特别感谢深圳广播电视大学,这所开放与自由的大学给了我充分实践的机会,使我得以总结出版拙作。
由于本人学识水平有限,书中的内容和程序难免有不妥和疏漏,恳请读者批评指正,如有任何问题,可以通过如下方式联系我。
邮箱:5353162@qq.com。
码云地址:https://gitee.com/qingmedia/Live-Event-Management。
姚大庆
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书提供如下资源:
书中彩图文件。
部分案例的程序代码。
要获得以上配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书品牌,依托于人民邮电出版社几十年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、软件测试、前端、网络技术等。
异步社区
微信服务号
以前看世界杯直播只能坐在电视机前,而如今可以选择电视、电脑、手机以及平板等众多设备,随时随地关注赛事,不用担心错过任何精彩瞬间,这一切都源于视频流媒体直播技术的发展。视频流媒体直播技术广泛应用于在线教育培训、活动庆典直播、数字电视广播、视频聊天通信、个人娱乐直播等众多领域。
可能大家在网上看视频多数是用点播的方式。点播与直播有什么不同呢?点播是将做好的视频内容放在服务器上,用户点击后,浏览器等客户端将视频下载到本地硬盘后再播放,就好比图1-1-1中的顾客在咖啡馆点了一杯咖啡,倒满杯子后再喝。而直播的节目源是连续传输的,边传边看,就像对着水管直接喝似的。
图1-1-1
早期的点播技术曾采用RTMP协议,而现在几乎都改为使用HTTP协议。按照常规的HTTP协议下载视频文件进行点播,必须等视频文件下载完成后才能播放,由于视频文件一般都比较大,将等待很长时间。对视频文件及HTTP服务器进行少许改进后,只需要下载缓存一定的数据量,一般只需几秒,就可以边下载缓存边观看视频了,这就是所谓的HTTP流式下载点播技术。如同图1-1-2中的人,不必等待杯子续满,就可以一边续一边用吸管喝。
视频流媒体直播是对连续不断的音视频进行捕获,以某种编码算法进行实时压缩,再基于特定的协议将数据分包,并像流水般不断地发送流媒体(streaming media)数据,用户通过网络即时接收并解码来进行收看和收听。
图1-1-2
视频与音频一般是同步传输的,处理视频比处理音频所需的计算量与带宽要大得多。本书所称视频如果不特别声明,都包含音频。
目前国内直播网站使用的常见直播协议主要有RTMP、HTTP-FLV和HLS,而DASH由于对HTML5的原生支持以及不依赖Flash,在国外推广得比较快,国内也开始出现少量应用。其他直播协议(如RTSP)多用于监控与数字电视行业,WebRTC主要针对实时交互方面的应用。
RTMP(Real Time Messaging Protocol)由Adobe公司开发,基于Flash Video视频流媒体,需要使用Flash播放器。它的直播延时较低,一般在数秒之内,而且效果非常稳定。得益于Flash的巨大影响力,RTMP在视频直播和点播领域具有重要地位。由于Flash频出的安全漏洞、高能耗等诸多问题,移动终端不支持Flash,PC的浏览器也基本抛弃了Flash,因此出现了其他几种直播协议,它们都试图取代RTMP。尽管如此,RTMP协议仍然广泛地应用于视频推流。
HTTP-FLV(HTTP Flash Video)是将流媒体数据封装成 FLV格式,客户端通过 HTTP 协议拉取FLV视频流,类似HTTP流式下载点播,如图1-2-1所示,其延时与RTMP差不多。FLV需要使用Flash播放器或其他途径如flv.js来播放。
图1-2-1
苹果公司为绕开Flash的问题,开发了HLS(HTTP Live Streaming)协议,它基于HTTP传输流媒体,不需要使用专用的网络端口。该协议当初主要为iOS 系统服务,现在安卓平台也支持该协议。
HLS协议涉及两个关键的文件类型:一是扩展名为ts的视频文件,它采用“Transport Stream”封装格式,它的突出特点是将视频文件进行任意分切后都可以正常播放;二是扩展名为m3u8的文本文件,它采用UTF-8编码,记录了ts视频文件的访问路径索引。
HLS直播的原理是将流媒体视频分切成多个时长为若干秒、连续而短小的ts视频文件,其路径不断更新,并被记录在m3u8索引文件中,客户端通过读取m3u8文件,轮流无缝播放这些ts视频文件,以点播的方式达到直播的效果。就像是在喝无限续杯的饮料(图1-2-2),一杯喝完就换一杯满的,不断循环,从而保证不断流。假设一个 “转盘(m3u8)”里有6个“小杯(ts)”,每个装满需5秒,为了尽可能保证供给,装满6杯后再喝,则喝到的这一杯是30秒前装满的,所以HLS的延时较高。如果要降低延时,就必须将ts切片减小,但这样会增大对服务器的下载请求压力。
图1-2-2
DASH(Dynamic Adaptive Streaming over HTTP)是一种新的视频传输协议,基于HTTP传输,由微软、苹果、Adobe等公司共同主导完成,于2012年制定标准。DASH原生支持HTML5,还可以在Web浏览器中实现受DRM保护的播放。DASH的原理类似HLS,也是将视频切成小段,但是HLS每个小的片段都编码成几种不同的码率、分辨率等,可以根据当前的网络带宽来下载合适码率的视频片段,最大限度避免停顿或重新缓冲,因此DASH在延时和流畅度方面都比HLS有很大改善,是一个很有前途的直播协议。
RTSP(Real Time Streaming Protocol)是TCP/IP协议体系中的一个应用层协议,普遍应用在视频会议、监控摄像、数字电视广播等行业。
HDS(Adobe HTTP Dynamic Streaming)是Adobe公司推出的另一种直播协议,它基于分段的F4V文件格式,通过HTTP传输音视频流,需要Flash插件播放,在国内很少见到它的应用。
WebRTC(Web Real-Time Communication)是一个基于网页浏览器进行实时音视频通信的应用程序接口(API),它于2011年6月1日开源并在Google、Mozilla、Opera的支持下被纳入万维网联盟的W3C推荐标准。WebRTC的显著特点之一是视频的延时特别小,主要目的是满足双向视频实时互动的需求。现在国内的视频服务提供商正在积极地开发基于Web RTC的大规模直播基础平台。
一个基本的直播系统一般由“媒体源”“视频编码和推流客户端”“服务器(流媒体和Web服务)”“播放终端”等环节构成,如图1-3-1所示。
图1-3-1
摄像头、专业摄像机、录像机、监控网络摄像头、多媒体文件、电脑显示器等都是常用的媒体源。不同的媒体源通过不同手段如捕获、抓取等,输入原始音视频数据到视频编码、推流客户端。
视频编码和推流客户端对原始音视频数据进行采集处理加工,编码成流媒体数据,推送到流媒体服务器。
有一些软件如FMLE、OBS Studio、FFmpeg、FFsplit、XSplit可以采集音视频信号,并对其进行编码和推流。另外还有一些硬件编码推流设备内嵌了音视频捕获和推流功能。
流媒体服务器接收音视频流并实现流媒体的分发,供众多用户观看。流媒体服务软件也有不少,笔者曾经用过的就有微软的MMS(Microsoft Media Server)、Adobe公司的AMS、Red5、SRS以及腾讯的云直播。
Web服务器负责呈现直播节目的信息发布与播放等。
播放终端常见的有PC机、手机和平板电脑,常见的操作系统有Windows、安卓、苹果系统等。观看直播所使用的浏览器的种类也有很多,但它们往往在渲染页面上有差异,因此适配不同种类的浏览器成了很重要的工作。
为了更好地了解视频流媒体直播系统环节的构成,让我们来搭建一个简单的直播系统,所需要的设备及软件参见表1-4-1。
表1-4-1
序号 |
硬件设备 |
主要软件 |
说明 |
---|---|---|---|
1 |
流媒体服务器 |
Adobe Media Server 5.0.15 |
Windows 7(64位) |
2 |
USB摄像头 |
无需特殊软件 |
可用笔记本电脑内置摄像头 |
3 |
编码推流客户端 |
Flash Media Live Encoder 3.2 |
Windows操作系统 |
4 |
播放终端 |
Web浏览器 |
Windows操作系统 |
表1-4-1中列出了3台电脑主机,其中“USB摄像头”安装在“编码推流客户端”电脑主机上,如果使用笔记本电脑,可以使用内置摄像头代替。此电脑主机需要安装软件Flash Media Live Encoder 3.2(以下简称FMLE)。
“播放终端”主要使用Web浏览器来观看直播,需要安装Flash插件,因此建议操作系统为Windows 7或者Windows 10。
“流媒体服务器”将安装Adobe Media Server 5.0.15(以下简称AMS),AMS 5需要64位操作系统,建议用64位Windows操作系统。
如无多余的电脑主机,可以使用一台台式机作为“播放终端”,并安装VMware Player,创建一个虚拟机作为“流媒体服务器”,这样,总共只需要2台物理机就能完成搭建。
当然,使用一台电脑使它同时担任3个不同角色也可以,只是由于视频和音频信号的输入捕获及输出播放都在同一台电脑上,如果操作设置不当,会造成播放的声音反馈到推流的音频输入,造成回音或啸叫等不良影响,因此建议“编码推流客户端”使用独立的电脑。
先将作为“流媒体服务器”的电脑主机安装好64位Windows 7系统,设置IP为静态固定IP,本节以192.168.0.10为例。安装配置流媒体服务器的步骤如下。
以下演示皆以AMS 5.0.15版本为准,双击AdobeMediaServer5_x64.exe安装程序,首先短时间闪现图1-4-1所示的画面。
图1-4-1
然后出现安装窗口,选择“I accept the agreement”(我接受该协议),单击【Next】按钮继续(图1-4-2)。
图1-4-2
接下来窗口提示“Enter your serial number.”(输入序列号),没有序列号也没关系,单击【Next】按钮继续(图1-4-3)。
图1-4-3
安装程序提示未填写序列号,将安装AMS5试用版(图1-4-4),试用版仅支持10个客户端连接。
图1-4-4
接下来提示选择安装的目标文件夹,按默认设置继续单击【Next】按钮(图1-4-5)。
图1-4-5
窗口提示选择需要安装的部件,AMS捆绑了一个Web服务软件Apache,按默认选择安装即可,单击【Next】按钮继续(图1-4-6)。
图1-4-6
继续单击【Next】按钮创建启动菜单(图1-4-7)。
图1-4-7
窗口提示创建管理账号,在“Administrator username”栏输入用户名,在“Administrator password”栏输入密码,在“Confirm password”栏再次输入密码确认,密码长度至少为8位,然后单击【Next】按钮继续(图1-4-8)。
图1-4-8
接下来窗口提示的中文意思是“你选择安装Apache。你想让Apache监听80端口吗?如果不是AMS,将要使用80端口”(图1-4-9),单击【是(Y)】按钮继续:
图1-4-9
下面设置AMS的服务端口,默认的1935就是RTMP使用的端口,而1111则是AMS系统管理使用的端口,全部取默认值,不用改变,单击【Next】按钮继续(图1-4-10)。
图1-4-10
下面的界面要求输入IP地址,不输入任何内容,保持空白,让AMS自动检测,单击【Next】按钮继续(图1-4-11)。
图1-4-11
这时候安装程序准备就绪,单击【Install】按钮开始安装(图1-4-12)。
图1-4-12
安装程序终于开始复制文件了(图1-4-13)。
图1-4-13
Windows防火墙可能会发出警报,单击【允许访问(A)】按钮(图1-4-14)。
图1-4-14
安装完成后,接受所有的勾选,单击【Finish】按钮并运行AMS(图1-4-15)。
图1-4-15
如果需要手动停止或运行AMS,可以从启动菜单中执行相应的操作(图1-4-16)。
图1-4-16
由于直播需要使用1935等端口,因此为了试验顺利,我们暂时先关闭防火墙,以开放这些端口的访问。依次打开“控制面板”“网络和Internet”“网络和共享中心”,单击左边的“Windows防火墙”(图1-4-17)。
图1-4-17
然后单击“打开或关闭Windows防火墙”(图1-4-18)。
图1-4-18
在“家庭或工作(专用)网络位置设置”下面,单击“关闭Windows防火墙(不推荐)”,再单击下面的【确定】按钮(图1-4-19)。
图1-4-19
在作为“编码推流客户端”的电脑主机上,双击运行FMLE安装程序,出现安装欢迎界面,单击【Next】按钮继续(图1-4-20)。
图1-4-20
接下来单击“I accept the terms in the license agreement”(我接受该许可证协议),单击【Next】按钮继续(图1-4-21)。
图1-4-21
安装窗口会提示选择目标文件夹,按默认选项单击【Next】按钮继续(图1-4-22)。
图1-4-22
安装准备就绪,单击【Install】按钮开始安装(图1-4-23)。
图1-4-23
安装完毕,单击【Finish】按钮并启动FMLE(图1-4-24)。
图1-4-24
初次运行FMLE时,有一个收集匿名信息用于改进程序的提示,勾选“Don’t ask me again”(不再询问我),单击【No, Thank You】按钮关闭(图1-4-25)。
图1-4-25
FMLE提示“Profile Validation”(配置文件验证)将使用默认参数,单击【OK】按钮继续(图1-4-26)。
图1-4-26
正常情况下,FMLE的主界面会显示摄像头拍摄的图像。
在图1-4-27所示的3个栏目中填写参数,其他栏目值暂时按默认参数不改,具体如下:
FMS URL:rtmp://192.168.0.10/live(此IP即流媒体服务器IP);
Stream:livestream(软件默认值,可自行更改,这里不做改变);
Output Size:640×360(此值也可根据摄像头的输出大小与比例自行更改)。
单击图1-4-27所示界面中右边箭头所指的【Connect】按钮,很快【Connect】按钮变成【Disconnect】按钮,同时左下角出现“Connected”(已经连接)的提示,表明连接服务器成功,再单击【Start】按钮就开始推流了。也可以直接单击【Start】按钮进行直播。
图1-4-27
推流成功后,FMLE显示音视频码率的状态(Statistics)(图1-4-28)。
图1-4-28
在作为“播放终端”的电脑上用浏览器打开服务器的IP地址(如http://192.168.0.10),显示出AMS默认安装的页面(图1-4-29)。
图1-4-29
那么刚才推流成功的图像在哪里可以看到呢?请在浏览器地址栏的IP地址后面输入strobeplayer_setup.html这个页面,即192.168.0.10/strobeplayer_setup.html,就会出现如下页面(图1-4-30)。
图1-4-30
在图1-4-30中3个画框的栏目位置填写或修改选项如下。
src(源):rtmp://192.168.0.10/live/livestream;
streamType(流类型):live;
autoPlay(自动播放):true。
然后单击最下面的【Preview and Update】按钮,页面右边就会出现播放窗口(图1-4-31)。
图1-4-31
如果上述地址打不开或不存在,则有可能是AMS版本与本书所安装的版本有所不同,这时可以自己编写一个首页index.html文件,文件内容如代码清单1-4-1所示。
代码清单1-4-1 index.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4 <title>LIVE Test</title>
5 </head>
6 <body>
7 <h1>LIVE Test</h1>
8 <object width="470" height="320">
9 <param name="movie"
10 value="http://192.168.0.10/swfs/StrobeMediaPlayback.swf"></param>
11 <param name="flashvars"
12 value="src=rtmp%3A%2F%2F192.168.0.10%2Flive%2Flivestream&streamType=live&auto Play=true">
13 </param>
14 <param name="allowFullScreen" value="true"></param>
15 <param name="allowscriptaccess" value="always"></param>
16 <param name="wmode" value="direct"></param>
17 <embed src="http://192.168.0.10/swfs/StrobeMediaPlayback.swf"
18 type="application/x-shockwave-flash"
19 allowscriptaccess="always"
20 allowfullscreen="true"
21 wmode="direct"
22 width="470" height="320"
23 flashvars="src=rtmp%3A%2F%2F192.168.0.10%2Flive%2Flivestream&streamType=live& autoPlay=true">
24 </embed>
25 </object>
26 </body>
27 </html>
将文件复制到C:\Program Files\Adobe\Adobe Media Server 5\webroot目录,可将原index.html删除或改名为index2.html以备参考(图1-4-32)。
图1-4-32
然后在浏览器(需要Flash插件,建议使用国内的浏览器如360浏览器等)中输入IP地址192.168.0.10,就可以看到直播的视频画面了(图1-4-33)。在本局域网内的所有电脑都可以用上述IP访问并观看直播。
图1-4-33