理解直播及其工作原理
Posted LiveVideoStack_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解直播及其工作原理相关的知识,希望对你有一定的参考价值。
点击上方“LiveVideoStack”关注我们
翻译 | Alex
技术审校 | 章琦
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
直播
Easy Tech
#011#
直播是指通过互联网实时传输演出的音频和视频内容。随着实时视频的流行,直播俨然已成为众多企业和组织市场战略的重要组成部分。直播可用于活动(赛事)直播、提供客户服务以及举行网络研讨会等一切内容。
本篇文章将带你探索什么是直播、直播的工作原理以及如何将它用于你自己的企业或者组织中。让我们一起来看一个典型的直播架构,然后为你详细解释转码、封装、DRM、广告插入、基于CDN的传输、回放以及其他组成直播管道的服务。
注意:直播管道包含了各种组件、工具和系统,但为了控制文章长度,我并不会在文中提及。比如,我不会在文中深入讲解OBS Studio、摄像机、麦克风、绿幕、图像、Overlay、渲染、后处理和字幕等。但是请继续关注我的文章,后续会带大家深入探索。
简介完毕,让我们一起开始直播旅程吧!
采集并传送视频到流媒体软件或平台
直播的第一步就是通过摄像机采集视频。摄像机的分辨率、配置和性能取决于应用程序。如果你在向朋友直播,或许你的笔记本中内置的摄像头就足够用了。但如果是直播一场音乐会或者体育赛事,那你最好使用专业的设备(灯光、摄像机和其他专用设备等)。
在政治集会、音乐会、体育赛事等大型活动中,摄像机馈送使用OB Van(户外录影转播车)通过卫星传输到转播站。这些本地/国家转播站收到视频后会对其进行处理,包括添加图像、Slates(类似于拍摄电影时使用的场记板,以图像或者短视频形式插入在直播中)、广告和提示文字等,然后将视频发送给直播管道进行转码等操作。
对于较小规模的视频制作,可以直接使用OBS Studio等专用软件在计算机上现场处理摄像机馈送(包括添加图像、Slates等),然后通过专业的直播平台在现场进行压缩(或在云上压缩)。
在下一部分,我们将学习直播中最重要的内容——视频转码。
视频转码
视频编码是一门在减少视频数据体积大小或码率的同时而不对其质量产生不良影响(在人类的视觉感知下)的科学,也被称为压缩。而视频转码是指重新编码压缩文件,但它多了一个编码之前对传入视频解码的步骤。
通常情况下,视频转码器有很多功能,比如能够:
编码和解码不同视频编解码器(如H.264/AVC、HEVC、AV1和VP9等)的码率。
在不同的容器格式之间转换(mp4、ts、fmp4、WebM和mkv等)
通过调整(放大和缩小)视频尺寸而产生不同分辨率的输出。这对于ABR和多码率广播来说至关重要。比如,1080p的输入可以用来生成1080p、720p、640p和480p的输出。
视频转码由一系列被称为视频编解码器的算法和工具实现。这些编解码器被众多公司和个人经过不断讨论、辩论和实验后被开发出来。一旦某个视频编解码器被标准化,那么任何人都可以购买许可证并根据标准来开发编解码器。市面上流行的视频编解码器包括H.264/AVC、HEVC、AV1、VP9、LCEVC、VVC和EVC等等。
使用HLS和MPEG-DASH的ABR技术
在转码以后,被编码后的码流被发送给封装器,并创建符合ABR的视频流。
什么是ABR? ABR是视频传输中的一项技术:可以根据播放器的带宽和缓冲自适应调整视频发送。如果播放器的带宽条件良好,那么它就会请求高质量视频版本;如果播放器的带宽突然下降或者缓冲增加,那么播放器就会请求低质量的视频以防止过度缓冲。
MPEG-DASH和HLS(HTTP Live Streaming)是主流的基于HTTP的自适应码率流媒体传输协议
为了支持基于HTTP的ABR视频流,需要对转码器的输出进行转换,将其转换为符合 HLS 或 MPEG-DASH 的视频流的过程被称为封装。封装过程包括:将视频拆分为多个切片,然后将视频切片编号、交付顺序、辅助信息、元数据等信息记录下来,并将这份记录放到被称为清单(DASH)或播放列表(HLS)的文件中。
这份清单首先被传送给播放器。根据清单的指示,视频播放器可以根据自身的缓存状态和可用带宽来合理请求视频切片。
使用DRM和内容保护技术可以保护封装视频不被盗版和窃取。我们在下一部分会讲到。
直播中的数字版权管理(DRM)
DRM(Digital Rights Management,数字版权管理)是指保护视频内容不被盗版、非法重播、非法下载以及阻止其他未经授权的视频内容消费的系统或技术。
DRM如何工作?
DRM使用对称加密算法(Symmetric-key algorithms)对视频内容进行加密,对称加密算法使用同一把密钥加密和解密。
首先,通过密钥(通常为AES-128)将内容加密,然后传输给客户端。这把密钥由专用服务器提供,安全可靠。
当客户端想要播放加密视频,就要向DRM服务器发送请求获取解密密钥。
服务器会对客户端进行鉴权,如果客户端通过鉴权,服务器就会将解密密钥和许可规则发送给它。
在收到解密密钥后,客户端使用被称为CDM(Content Decryption Module,内容解密模块)的安全软件解密,并解码视频,然后将其安全地发送给屏幕。
有多种许可规则可供视频服务提供商配置,从而控制观看视频的人群、时间和地点。在大部分商业DRM实现中,你能:
阻止来自某些特定国家的观众
允许在特定时间内访问内容
防止某个用户将电影投射到屏幕上
阻止免费用户观看付费内容
阻止在某些特定设备的回放
在减少盗版以及确保内容创作者能够劳有所得方面,DRM发挥了重要作用。市面上有很多可以信赖的商业DRM技术,比如微软的PlayReady、Google的Widevine和Apple的FairPlay。也有一些DRM供应商提供围绕DRM解决方案的更多基础设施,比如添加更多商业规则、分析或者视频服务提供商工具等。
直播中的广告插入
AVOD(Advertising-based Video On Demand,广告型视频点播)是通过在视频流中插入广告的方式产生收益的一种视频点播商业模式。
按理来说,AVOD服务是免费观看的,因为视频服务提供商已经从你每次的观看或者点击中获利。但他们将广告捆绑到Freemium(是指用免费服务吸引用户,然后通过增值服务将部分免费用户转化为收费用户)服务中,所以你需要订阅才能观看免广告内容。
VAST(Video Ad Serving Template,视频广告服务模板)和VPAID(Video Player-Ad Interface Definition,视频播放器广告接口定义)是主要的广告服务标准,由IAB(Interactive Advertising Bureau,互联网广告署)制定。通过使用这些标准,整个广告生态系统在创建、编辑、提供和跟踪广告的过程中紧密运作。
在广告传输方面,有两种在视频中插入广告的方法:CSAI(Client-Side Ad Insertion,客户端广告插入)和SSAI(Server-Side Ad Insertion,服务器端广告插入)。
CSAI是指从视频播放器向响应广告创意(Ad creative)的广告服务器发出调用。因此,CSAI 是由播放器驱动的。
SSAI是指将广告直接插入(拼接到)视频流中,无需调用服务器来接收广告。SSAI的优势是能够避开广告拦截器(因为广告是由服务器发起而非客户端)。
但是,播放器如何知道在什么时间播放视频?通过清单或者播放列表发送到播放器的信息已经被广告中断信息修饰过,所以清单将明确指定何时播放广告、在何处获取广告以及向何处发送广告跟踪数据。
哪里可以插入广告?广告可以插入到视频播放前(pre-roll)、视频播放中(mid-roll)或者在视频结束后(post-roll)。插入位置的选择取决于视频服务提供商想要使用哪种广告位置组合。他们也可以选择将视频组合成Ad-pods(YouTube推出的一款广告产品,它允许广告主在广告时间连续播出两支广告。)。
直播中的CDN
CDN(Content Delivery Networks,内容分发网络)是分布在世界各地的服务器,用来快速有效传输直播视频。CDN位于视频播放器和源站之间,负责跨地理区域分发视频内容。CDN通过有效调节流量、保护服务器免于过载和降低延迟保障了流畅的观看体验。
下面是对直播中CDN工作原理的简单描述:
在转码、封装、DRM和插入广告后,最后视频流被发送到源站上(基本上是指Web服务器)。
源站的URL(即可用视频流所在的地址)被配置给CDN。
视频播放器被编程为向CDN请求视频切片,而不是直接向源站请求。
当第一个播放请求到达CDN,CDN缓存中可能没有内容,于是它便将请求转发给源站。当CDN收到来自源站的响应,它缓存住内容并且发送给播放器。
下一次另一个视频播放器请求同一视频切片时,CDN首先检查缓存看是否已缓存过被请求的内容。如果缓存过,CDN将缓存视频分发出去;如果没被缓存过,CDN向源站请求发送视频切片。
如下为直播时使用CDN的好处:
可扩展的视频传输
降低延迟和减少缓存
减少源站上的负载
提升视频质量
保护源站免遭DDoS攻击
多屏视频回放
现在为止,我们已经讲了转码、封装、使用DRM保护视频、向视频中插入广告或广告标记、将视频存储在源站上并设置CDN用于传输,现在让我们来学习如何开发供人们播放和观看视频的播放器。
视频播放器形态、大小不一,并且它们需要针对操作系统和环境进行定制。这是因为人们会在不同的设备上观看视频,如笔记本电脑、游戏机、智能手机(ios、android系统)、智能电视、平板电脑、电视机顶盒(Roku、Chromecast、AmazonFireTV)。由于这种多样化的生态系统,视频播放器的开发和维护就需要多种编程技能,包括使用不同的编程语言进行编程,理解DRM、广告插入和API的使用等。
让我们来看看不同平台上使用的视频播放器:
Android:Exoplayer
iOS、tvOS:AVPlayer
用于联网电视的Roku(用Brightscript所写)、Amazon Fire TV和Chromecast
Web/html5
用于Tizen操作系统和LG WebOS播放器的三星电视AVPlay
也有一些开源播放器,如Exoplayer、VideoJS、HLS.js、Dash.js和Shaka player等。除此之外,许多公司提供收费的视频播放器并提供支持。这些商业播放器需要测试与HLS、DASH、DRM、广告插入和字幕的兼容性,并(常常)带有用于收集回放信息的扩展API。
视频分析:QoE和QoS
整个世界都在数据上运行,你的直播平台也不例外。视频直播提供商应该使用分析服务系统或者构建自己的分析系统来为直播收集使用、QoE和QoS数据。
这些数据不仅能够告诉你服务表现,还能证明视频流管道中每一部分都能通过合适的数据质量和数量来进行优化。
播放器中收集到的最重要的数据包括:
延迟或者首屏延迟:测量用户按下播放键后视频显示的所需时间
缓冲时间:视频缓冲所需时间
缓冲比:在播放特定数量视频后,缓冲时间会达到多少?
播放次数(开始次数)
完播次数
视频开始前退出:在用户按下播放键以后,用户会在第一帧显示前退出吗?如果发生了这种状况,会是什么原因?
对于AVOD提供商而言,追踪广告填充率、广告QoE、完成率和完成四分位数等(用以优化和投递)十分重要。
获取订阅者、视频等相关信息并将这些数据联系在一起所产生的有用数据会帮助市场、销售、内容生产/策划团队优化他们的未来活动。
订阅和付费服务
订阅和付费服务对于管理订阅者、接受付费、续订跟进十分必要,它们可以确保你的PVOD、SVOD和TVOD(PPV)业务正常运行。大部分人在想象如何构建直播系统的时候,只能想到编码器和CDN,但事实上,诸如计费、付款、订阅等辅助服务对于建立和运营您的业务也至关重要!
TVOD (按次付费)提供商也需要此类服务和工具来管理支付、允许付费用户(仅限)访问内容、在特定时间内限制访问并实行某些限制。这些可以通过支付处理服务、订阅管理服务和附有租用协议的 DRM 来实现。
重新“造轮子”毫无意义,花上100个小时自己来构建这些订阅管理和支付服务,不如直接从现有供应商那里购买。
结语
如你所见,直播需要许多移动组件,这些组件紧密地组合在一起从而获得出色的用户体验。你可以使用开源或 COTS 应用程序自行设置所有组件,又或者可以选择包含这些组件的 OVP(Online Video Platforms,在线视频平台)来快速上线。
在DIY和购买现成产品之间总是要权衡成本、上市时间、维护成本和质量等因素。你最好在仔细调查完所有影响业务的因素之后,再在二者之间做出决策。
我希望本篇文章能够为你提供有用的信息,助你理解直播及其工作原理。我们下次再见,祝大家直播愉快!
致谢
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/what-is-live-streaming-how-does-livestreaming-work/
延伸阅读:
扫描图中二维码或点击阅读原文
了解大会更多信息
喜欢我们的内容就点个“在看”吧!
以上是关于理解直播及其工作原理的主要内容,如果未能解决你的问题,请参考以下文章
线上直播当spark遇上tensorflow大规模深度学习框架原理和实践
今晚直播当spark遇上tensorflow分布式深度学习框架原理和实践