分享

【流媒体|从入门到出家】:流媒体原理(上)

 昵称60977328 2018-11-30
 ​说明:第一部分主要扯扯对流媒体的基本认识,对之前目录进行了部分调整,便于微信文章阅读,我们将文章分为两次推送。之后会给出一些文章中、工作中经常碰到的专业术语的解释。

​第一篇 流媒体原理

1.1 流媒体概念

不知道你发现没有,我们的生活正慢慢的向着“实时”发生转变。我们获取、分享信息,乃至日常中的衣食住行,都在变成像“自来水”那样源源不断“流体”服务,我们无需提前储备,只需实时按需取用。这个转变依赖于科技的进步,计算机科技在历经了文件(File)、页面(Web)时代后,今天来到了以“流(Flows/Streams)”为单位的时代。我们的生活就在各种信息流、数据流、媒体流中节奏越来越快,速度为王,质量靠边站。

向“流”转变最初最典型的应用就是流媒体(Streaming Midea)技术,它指的是在网络上采用流式传输技术来发布音频、视频以及其他多媒体文件。所谓的流式传输就是将音频、视频多媒体文件经过一定算法编码压缩成一个个很小的压缩包,流媒体服务器通过特定网络协议进行连续、实时的传送,用户端接收到压缩包后由播放软件实时解压缩实现播放的过程。而所谓的流媒体则特指一切采用这种流失传输的媒体文件。

流媒体技术的出现改变了我们还未曾忘记的那种需要将整个音视频文件下载到本地计算机才能进行观看,为此要等上漫长时间的传统媒体播放方式。我们今天通过互联网看视频、看直播、听音乐,通过各种盒子(IPTV/OTT)看电视、听广播如此的方便,一键观看即点即用,其背后就是有着流媒体系统的支撑。


1.2 流式传输特点

以往传统看视频的方式是将整个视频文件下载到本地计算机硬盘,再通过本地播放器程序进行观看。而流式传输则是将连续视音频经压缩编码、数据打包后连续、实时的传送给接收设备,用户端在后续源源不断的数据包到达的同时对接收到的数据进行解压和播放。这个过程中,只需要等待几秒或几十秒的启动时间就可以正常观看视频了,剩余的部分就像“水流”一样在一边观看的同时一边下载。下图描绘了流式传输的过程。

【流媒体|从入门到出家】:流媒体原理(上)

​在对于音视频的传输分发上,我们会经常听到HTTP渐进式、HTTP流、RTMP、RTSP、HLS、HDS、DASH、Websocket等等专业术语。对于传输协议后续文章会专门讨论,实际上,从传输方式上大致可以分发传统文件下载、HTTP渐进式下载、HTTP流式传输、实时流媒体传输四大类。

HTTP渐进式是指通过支持Seek,终端播放器可从没下载完成部分中任意选取一个时间点开始播放,如此来满足不用等整个文件下载完快速播放的需求,一般MP4和FLV格式文件支持较好,打开一个视频拖拽到中部,短暂缓冲即可播放,点击暂停后文件仍将被持续下载就是典型的渐进式下载,目前大型点播网站如YouTube、优酷等均采用这种方式。

HTTP流式传输或者HTTP流化技术,不同厂商有不同做法,但主要思路都是在服务端将媒体文件分割成一个个很小的独立切片文件,文件分片时需要同时产生用于跟踪切片的索引文件(描述文件),播放器再通过HTTP协议向服务端请求一个个小的媒体切片实现点播或直播的播放,我们平常听到的HLS(Apple)、HDS(Adobe)、MSS(Microsoft) 、DASH(MPEG通用标准)均属于HTTP流的范畴。下表总结了不同传输方式的特点:

【流媒体|从入门到出家】:流媒体原理(上)



1.3 流媒体系统构成

流媒体文件从采集到最终播放的路径就是一套完整的流媒体系统所需的组成部分。

从系统层面来看,编码层负责对音视频文件编码压缩(h.264/h.265/VP9/AAC等);封装层负责对数据包进行容器封装(flv/ts等);协议层负责网络打包(RTMP/HTTP等);传输层负责网络传输(socket/st等);播放层负责对图像进行解码显示(FLASH/VLS/VIDEO JS等)。

从我们所熟知的产品服务层面,一套完整的流媒体系统所需的组件一般包括:

(1)        编码器:用于流媒体文件生成的编码工具;

(2)        流媒体数据;直播信号、点播文件;

(3)        流媒体服务器:用于控制、传送流媒体数据的流媒体服务器;

(4)        传输网络:能够支持特定流式数据传输协议的传输网络;

(5)        多终端播放器:各操作平台用于显示流式数据的播放器。

以上5大组件是一个流媒体系统所必须要的基本组件,随着近年来的迅猛发展,能够承载大规模流媒体应用的内容分发网络(CDN)也有必要纳入流媒体系统的范畴了。除了这些基本系统外,大型的运营及流媒体系统还会有流媒体内容制作生产、内容管理控制、数据监控等周边系统和中间件等。


1.4 流媒体涉及技术

流媒体技术诞生的主要目的是要在目前“尽力而为”的Internet上传输数据量非常大的音视频文件,所以流媒体技术最核心的就是音视频编解码技术和流式传输技术。

然而,在今天这个“体验为王”的时代,我们需要面临的流媒体,不论从用户量级上还是应用场景上来说都是极为复杂的。靠堆砌几台流媒体服务器,架个开源的OBS和播放器简单实现功能的时代早已过去。从当下成熟的大型流媒体系统来看,要完成一个支撑高体验大规模的流媒体系统,必要要考虑的技术层面有:

(1)        云计算基础服务相关技术

这几年视音频技术、终端硬件平台、用户需求极速增长的同时,骨干网、跨运营商等基础设施的建设却明显没有跟上趟。这种现状下,要实现高稳定、高并发、低延时的流媒体应用,基于云架构的计算、网络、存储、CDN等底层基础服务已经变成了必须。硬件虚拟化,网络虚拟化能够最大程度保障视音频播放的稳定性;CDN内容分发网络能够有效应对高并发和突增流量的需求,对流媒体传输所有环节进行针对性优化能够大幅降低延时;对象存储满足了流媒体数据的大规模存储要求。

(2)     视音频相关技术

这个层面包括了视音频的编/解码、4K、VR等视音频核心技术能力,尤其是在新形势下移动端编码和播放的优化。这里面包括了对不同硬件平台、操作系统的实践,固网移动网等不同网络环境下的理解,以及在弱网情况下的解决方案等。另外,4K、VR、AR等新技术的发展能提升提升用户观看体验,甚至引发全新应用场景;新的编码标准如H.265等能进一步提升视音频编码效率,降低对网络带宽、CDN的消耗。

(3)     场景化应用相关技术

虽说流媒体的核心只是音视频编解码和流媒体传输,但针对当下不同垂直领域对于流媒体的应用,其中一些场景化功能需求,流媒体系统也不得不去考虑。比如秀场娱乐直播的实时录制,实时水印,实时鉴黄;社交直播的连麦;IPTV/OTT的时移回看;现场直播的云端导播;视频网站的版权保护等等。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多