您的位置 首页 > 数码极客

【mpeg是什么格式】需要了解产品经理、音频和视频技术。

在当今移动互联网时代,更了解直播产品。比如看游戏直播、看美女播音员、听直播课等。另外,随着抖音(抖音)、快手等短视频应用程序的爆炸,视频产品充满了我们的生活。那么直播或视频的产品背后相关的音频和视频技术知识有哪些呢?(希德比舍尔斯、Northern Exposure(美国电视剧)、视频名言)本文介绍了直播产品基础设施中的一些基本音频和视频技术知识。

(音频、视频领域博大精深,本文仅从一个PM的角度概括最基本的内容)

一、直播的基础架构

直播功能的共同基础设施包括音频视频采集、云服务器和音频视频播放三部分。

下图是APP直播功能的体系结构。

如上图所示,每个部分都有需要处理的任务。

通常,视频直播类功能的整个过程包括:

音频视频采集音频视频处理音频视频编码和封装流媒体服务器处理全流式音频视频解码音频视频播放在具体了解每一个过程之前,先从音频视频的基本知识开始。

二、音视频技术基础

1. 音频

声音:

我们平时在手机或电脑上听到的音频是已经数字化的音频模拟信号。最初,这种音频是从物理声音开始的。

中学物理学都学过,声音是波,是通过物体的振动产生的。

声波有三种元素。

音调:也称为音频。频率越高,波长越短,低频声音的波长越长。所以这种声音很容易绕过障碍物。能量衰减越小,声音传播得越远。体积:振动的振幅。用不同的力量敲桌子,声音的大小一定会改变。生活中,我们用分贝来描述声音的音量。音色:相同的频率和音量,每个物体的声音都不一样。波形的形状决定声音的音调。不同媒体产生的波形不同,所以音色也不同。模拟信号数字化过程:

模拟信号的数字化是将模拟信号(包括采样、量化和编码)转换为数字信号的过程。

我们可以通过下图了解这个过程。

采样:可以理解为将时间轴上的信号数字化。通常,采样率用于使一定频率范围内的声音数字化。例如,采样频率通常为44.1KHZ,即每秒44100次采样。量化:是指在振幅轴上对信号进行数字化。也就是说,声音波形数据是以位为单位的二进制数据的位数。例如,使用16位的二进制信号存储样本。这也称为量化水平。量化水平是数字声音质量的重要指标,通常将声音描述为24位(量化水平)、48KHZ(采样率)。编码:以特定格式记录采样和量化的数据。音频编码有多种格式。通常,音频原始数据表示脉冲编码调制(PCM)数据。PCM音频流的比特率可用于描述PCM数据,计算方法为:采样频率*采样大小(量化级别)*通道数(单声道、2通道和多声道)。通过上述过程,实现了音频信号的数字化过程。转换为数字信号后,可以存储、播放此数据、获取复制等其他操作。

音频编码:

如上所述,编码是根据特定格式记录采样和量化的数据。那么为什么要编码呢?

收集和量化的数据非常大。在存储或网络的实时传播方面,这个数据量太大了。存储和传输都非常困难,所以必须通过编码进行压缩。

压缩编码的指标是压缩比,压缩比一般小于1。

压缩编码算法分为有损压缩和无损压缩两种类型。

无损压缩:解压缩的数据可以完全还原。常用的压缩格式。用得多的都是损失压缩。有损压缩:解压缩的数据无法完全恢复,部分信息丢失。压缩比越小,丢失的信息越多,信号恢复的失真也越大。压缩编码的本质是压缩冗余信号。冗余信号是人类耳朵探测不到的信号。也就是说,人耳听觉范围外的音频信号和隐蔽的音频信号。信号的屏蔽可以分为频域屏蔽和时域屏蔽,对于信号的屏蔽,大家可以自己百度一下。这里不过度说明。

那么音频压缩编码的一般格式是什么?

主要包括:WMA编码;MP3编码;AAC码,这个现在比较流行。

的有损压缩编码技术,也是目前在直播或小视频中常用的编码格式;OGG编码等。

2. 视频

数字视频:

我们平时在手机或PC上看到的视频,是由内容元素、编码格式和封装容器构成的。

  • 内容元素:包括图像(Image)、音频(Audio)和元信息(Metadata)。
  • 编码格式:包括视频常用编码格式H264,和音频常用编码格式AAC。
  • 封装容器:这就是常见的文件格式,如MP4、MOV、FLV、RMVB、AVI等等。

图像:

图像是人对视觉感知的物质重现。三维图像的对象包括:深度、纹理和亮度信息,二维图像包括纹理和亮度信息,我们可以简单的把纹理就理解为图像。

说了图像的概念,现在来说下视频:视频是由多幅图像构成的,是一组连续的图像。一个基本的数字视频,基本是通过“采集——处理——显示”形成的。

编码格式:

上面我们说到了音频的编码,视频同样是存在编码的过程的。视频编解码的过程是指对数字视频进行压缩或解压缩的过程。

在进行视频的编解码时,需要考虑以下因素的平衡:视频的质量、用来表示视频所需要的数据量(通常称之为码率)、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其它一些因素。

常用的视频编解码方式有H.26X系列和MPEG系列,而目前最常用的视频编码格式是H.264,它的优点是低码率、图像质量高、容错能力强、网络适应性更强,并且已被广泛应用于实时视频应用中。

再介绍一些关于H.264的知识:

在H.264中,图像是包括帧、顶场和底场的,一副完整的图像就是一帧。

当采集视频信号时,如果采用逐行扫描,则每次扫描得到的信号就是一副图像,也就是一帧。如果采用隔行扫描(奇、偶数行),则扫描下来的一帧图像就被分为了两个部分,这每一部分就称为场,根据次序分为:顶场(也成为偶数场)和底场(也成为奇数场)。

帧和场的概念又带来了不同的编码方式:帧编码和场编码。逐行扫描适合于运动图像,所以对于运动图像采用帧编码更好;而隔行扫描适合于非运动图像,所以对于非运动图像采用场编码更理想。

此外,每一帧图像可以分为多个片,每一个片由宏块构成,而每个宏块又是由子块所构成的。

封装格式:

视频的封装格式可以看成是一个装载着视频、音频、视频编解码方式等信息的容器。一种视频封装格式可以支持多种的视频编解码方式,比如:QuickTime(.MOV)支持几乎所有的编解码方式,MPEG(.MP4)也支持大部分的编解码方式。

在PC上,我们经常会使用.MOV的视频文件。通过以上的介绍,我们就知道了,这个视频的文件格式是.MOV,封装格式是QuickTime File Format,但是我们无法知道它的视频编解码方式。如果我们想要专业的去描述一个视频,可以描述成:H.264/MOV的视频文件,这就是说它的封装方式是QuickTime File Format,文件格式是.MOV,编码方式是H.264。

H.264:

H.264是一种高性能的视频编解码技术,是由“国际电联”和“国际标准化组织ISO”联合组建的联合视频组共同制定的新的数字视频编码标准。

我们在上面已经说到了H.264编码技术的优势,我们接下来看一下H.264所涉及的关键技术:

我们首先要知道,无论是视频或音频编码,其目的都是压缩。视频编码的目的,是抽取出冗余信息,这些冗余信息包括:空间冗余、时间冗余、编码冗余、视觉冗余和知识冗余。

基于此,H.264的压缩技术涉及:

a)帧内预测压缩,解决的就是空间数据冗余问题。空间冗余数据就是图里数据在宽高空间内包含了很多颜色和光亮,人的肉眼很难察觉的数据。对于这些数据,我们是可以直接压缩掉的。

帧内压缩对应的是I帧——即关键帧。那么什么是I帧呢?网上教程中有一个经典的例子,如果摄像头对着你拍摄,1秒之内实际你发生的变化是非常少的。摄像机一般1秒钟会抓取几十帧的数据,比如像动画,就是25帧/s,一般视频文件都是在30帧/s左右。那些对于一组帧来说变化很小的,为了便于压缩数据,就将第一帧完整的保存下来。如果没有这个关键帧后面解码数据是完成不了的,所以I帧是特别关键的。

b)帧间预测压缩,解决的是时间数据冗余问题。在上面的例子中,摄像头在一段时间内所捕捉的数据没有较大的变化,我们针对这一时间内的相同的数据压缩掉,这就是时间数据压缩。

帧间压缩对应的是P帧和B帧。P帧是向前参考帧,压缩时只参考前一个帧。而B帧是双向参考帧,压缩时即参考前一帧也参考后一帧。

c)整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化。

d)CABAC压缩:无损压缩。

H.264除了上述的关键技术,还有几个重要的概念需要了解:

  • GOF:一组帧,就是一个I帧到下一个I帧,这一组的数据。包括B帧/P帧,我们称为GOF。
  • SPS和PPS:SPS和PPS是GOF的参数,SPS是存放帧数,参考帧数目,解码图像尺寸,帧场编码模式选择标识等。而PPS是存放熵编码模式选择标识,片组数目,初始量化参数和去方块滤波系数调整标识等。

在进行视频解码的时候,接收到一组帧GOF之前,我们首先收到的是SPS/PPS数据,如果没有这组参数的话,是无法进行解码的。

因此,如果在解码时发生错误,首先要检查是否有SPS/PPS。如果没有,就要检查是因为对端没有发送过来还是因为对端在发送过程中丢失了。

更加详细的H.264编码原理这里就不做介绍了,大家感兴趣的可以上网查阅一下资料,比如:宏块分组划分、宏块查找、帧内预测、DCT压缩以及H.264的码流结构等知识。

三、直播流程详述

通过上面的介绍,我们已经了解音视频一些基本的知识。接下来,我们一起再描述一遍直播类应用的整体流程。

1. 音视频采集

在音视频采集阶段会包括:音频采集和图像采集。

在音频采集时,除了上面我们说到的采样率、量化级数和声道数参数外,还需要音频帧。

音频跟视频很不一样,视频每一帧就是一张图像,而从声音的正玄波可以看出:音频数据是流式的,没有明确的一帧帧的概念。在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取 2.5ms~60ms 为单位的数据量为一帧音频。

这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的。

如果某音频信号是采样率为 8kHz、双通道、量化级数是16bit,采样时间是20ms,则一帧音频数据的大小为:8000 * 2 * 16bit * 0.02s = 5120 bit = 640 byte

在图像采集中,采集的图片结果会组合成一组连续播放的动画,即构成视频中可肉眼观看的内容。

图像的采集过程主要由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。在图像采集阶段,涉及的主要技术参数包括:图像传输格式、图像格式、传输通道、分辨率以及采样率。

在音视频的采集阶段,常用的采集源包括摄像头,比如手机的前后置摄像头;游戏直播中使用的屏幕录制;和电视节目中视频文件的直接推流。

2. 音视频处理

音视频处理会分为:视频处理和音频处理。

视频处理包括:美颜、滤镜、面部识别、水印、剪辑拼接等。音频处理包括:混音、降噪、声音特效等。

下面我们简要描述一下美颜和视频水印的基本原理:

美颜的主要原理是通过【磨皮】+【美白】来达到整体美颜效果的。磨皮的技术术语是去噪,也就是对图像中的噪点进行去除或者模糊化处理,常见的去噪算法有均值模糊、高斯模糊和中值滤波等。这个环节中也涉及到人脸和皮肤检测技术。

视频水印包括播放器水印和视频内嵌水印两种方式。对于播放器水印来说,如果没有有效的防盗措施,对于没有播放鉴权的推流,客户端拿到直播流之后可以在任何一个不带水印的播放器里面播放,因此也就失去了视频保护的能力。所以,一般来说会选择视频内嵌水印的方式打水印,这样,水印就会内嵌到视频之内,在视频播放的过程中持续显示。

再多聊一些,视频内嵌水印也会应用在软件中,软件中播出企业内部版权保护的动画段视频时,会应用到内嵌水印的技术。

3. 音视频编码和封装

音视频的编码以及视频的封装在上述基础知识部分已经介绍过了,这里不再赘述。

在这里说一下编码器的知识。上文中我们了解了H.264的编码技术,编码流程是要基于编码器进行的。

编码器的主要流程是:帧内预测(去除空间冗余)/帧间预测(去除时间冗余)——变换(去除空间冗余)——量化(去除视觉冗余)——熵编码(去除编码冗余)。通过该流程,即可完成音视频的编码步骤。

4. 推流

推流就是将处理过的音频和视频数据通过流媒体协议发送到流媒体服务器。

推流协议:

推流所遵循的协议有RTMP、WebRTC和基于UDP的私有协议。

  • RTMP协议是基于TCP协议的,RTMP 是目前主流的流媒体传输协议,广泛用于直播领域,市面上绝大多数的直播产品都采用了这个协议。但是,由于基于TCP协议,传输成本高,在弱网环境下丢包率高,不支持浏览器推送。
  • WebRTC是一个支持网页浏览器进行实时语音对话或视频对话的 API,主要应用于视频会议。它的主流浏览器支持度高,并且底层基于SRTP和UDP,弱网情况优化空间大。
  • 基于UDP的私有协议。有些直播应用会使用 UDP 做为底层协议开发自己的私有协议,因为 UDP在弱网环境下的优势通过一些定制化的调优可以达到比较好的弱网优化效果,但是开发成过高。

CDN:

推出去的流媒体要给各个地理位置的观众看,那么这里就需要CDN网络了。CDN就是为了解决用户访问网络资源慢而产生的技术。

CDN包括边缘节点、二级节点和源站。内容提供方可以将内容放到源站上,用户从边缘节点获取数据,而CDN的二级节点则用于缓存,减轻源站压力。

在直播领域中,CDN要支持的服务如下:

  • 流媒体协议的支持。比如RTMP等;
  • 首屏秒开。从用户点击到播放控制在秒级以内;
  • 1~3 延迟控制。从推流端到播放端,延迟控制在 1~3 秒之间;
  • 全球全网智能路由。可以利用整个CDN网络内的所有节点为某一单一用户服务,不受地域限制。

5. 流媒体服务器处理

流媒体服务器要做的事情包括:数据分发(CDN)、支持上述CDN的一些服务、实时转码以及内容的检测(鉴黄)等。

6. 拉流

拉流就是客户端从流媒体服务器上拉取获得上述步骤中的音视频数据。同理,这个过程也是要基于上述的协议和CDN。

7. 音视频解码

在上述H.264编码的介绍中,说到了SPS/PPS是解码必备的数据。此步骤就是需要对拉流下来已编码的音视频数据进行解码。

解码过程就是编码的逆过程,这个过程包括:熵解码、变换解码、预测解码。

H.264规范规定了解码器的结构,解码的过程大体如下:以宏块为单位,依次进行熵解码、反量化、反变换,得到残差数据。再结合宏块里面的预测信息,找到已解码的被参考块,进而结合已解码被参考块和本块残差数据,得到本块的实际数据。宏块解码后,组合出片,片再进而组合出图像。

这里要说明的是:如果H264码流中I帧错误或丢失,就会导致错误传递,单独的P帧或B帧是完成不了解码工作的。I帧所保留的是一张完整的视频帧,是解码的关键所在。

8. 音视频播放

在完成了音视频数据的解码后,就可以通过硬件设备(手机或PC)上的播放器对音视频文件进行渲染播放了。

那么,上述架构图中的信令服务器是干什么的呢?

——信令服务器是用来处理主播端和用户端的一些信令指令的。

在网络中传输着各种信号,其中一部分是我们需要的(例如:打电话的语音,上网的数据包等等),而另外一部分是我们不需要的(只能说不是直接需要)它用来专门控制电路的,这一类型的信号我们就称之为信令(摘自百度百科)。也就是说,信令是指通信系统中的控制指令。

我们基于此,再来描述一下这整个的流程:

  1. 主播共享端发起一个信令,比如:创建房间(或聊天、发送礼物等),到达信令服务器;信令服务器处理并且创建一个房间,同时返回给主播共享端一个流媒体云的地址。
  2. 接下来,主播共享端采集数据(音视频的采集、处理以及编码封装流程)形成RTMP流推送到CDN网络(推流)。
  3. 观众要进行观看时,客户端会发送信令到信令服务器,信令服务器将该观众加入到主播的房间中,同时也会返回一个流媒体云的地址(该地址就是之前主播端的流媒体云地址)。
  4. 客户端拿到此流媒体云地址后,就会到流媒体云服务器拉取到该媒体流(拉流和解码),从而看到要观看的直播节目(播放器播放)。

好了,以上就是直播类应用的一个最基本的架构和流程了。

四、总结

本文通过直播类应用的架构,介绍了一些音视频技术方面的知识,并且详述了直播类功能的整体流程。

音视频技术是一个高深的领域,本文只是做了一些基础知识的总结,如果大家想要深入了解更多的音视频技术,我推荐大家可以学习一下雷神(雷霄骅)的博客。

#专栏作家#

流年,人人都是产品经理专栏作家。互联网产品设计师,4年互联网产品设计经验。擅长用户体验设计,喜欢钻研需求功能背后的技术实现方式;在成为综合型产品设计师的道路上不断努力前进!

本文原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

关于作者: luda

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐