一套大规模的流媒体直播系统,由编码工具负责对音视频文件编码压缩(h.264/h.265/VP9/AAC等);由流媒体服务器负责对数据包进行容器封装(flv/ts等)以及负责网络协议打包(RTMP/HTTP等);由CDN网络进行全网分发;由播放层负责对图像进行解码显示(FLASH/VLS/VIDEO JS等)。流媒体直播系统所需的核心组件包括:
(1)编码工具:用于流媒体文件生成的编码工具
(2)流媒体服务器:用于控制、传送流媒体数据的流媒体服务器
(3)CDN网络:用于支撑流媒体的全网分发网络
(4) 网络协议:用于支持特定的流式传输的网络协议
(5)播放器:各操作平台用于显示流式数据的播放器
编码工具
视音频的编码应该是整个视音频技术中最复杂、涉及知识点最多的技术了,当然也是最重要的技术,这是一门专业学科。我们研究流媒体时,如果不是专业做编解码的,倒不必对编解码技术进行系统学习。
因为当下市面上有大量优秀的专业编码设备、编码软件、开源工具,我们只需要了解视音频编解码大致的原理,了解各种编码标准,做流媒体时如何选择及使用编码工具就达到目的了。
(1)视音频编码原理
我们所谓的视音频编码,其实就是一个对数据进行压缩的过程。在编码原理这块,我们无需掌握其过于深奥的数学原理和计算机算法,只需要搞清楚两个问题即可,一是为什么要压缩?二是为什么能压缩?
为什么要压缩,在回答这个问题之前我们需要搞清楚我们天天在网上看的直播里面那些视频和音频到底是个什么东西。视频,是通过摄像头采集下来的YUV等原始数字格式;音频,是通过麦克风拾音器采集下来的PCM等原始数字格式。
为什么能压缩,主要是由于原始视音频数据存在以下两种冗余数据,所以我们才能使用编码算法对数据量进行大幅压缩,以此实现网络上的传输和存储。
(2)编码器工作流程
在我们熟悉的流媒体直播系统中,编码工作一般由硬件编码器、PC端OBS/FMLE、移动端各种采集SDK来完成。这些编码工具除了压缩编码之外,其实还完成了下图所示的采集、编码、封装、协议打包、推流5大环节,其中每一个环节都涉及非常多的理论知识和巨大的研发工作量。
0 条评论