音视频技术以及处理介绍
音视频技术以及处理介绍
目录
简介
什么是音视频
音视频技术其实就是音频技术和视频技术的一个统称,在实际处理中,音视频需要分开处理。
视频:图像,随着时间变化的动态图像
视频的基础是视觉暂留原理
人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像。但当物体移去时,视神经对物体的印象不会立即消失,而要延续0.1 -0.4秒的时间,人眼的这种性质被称为“眼睛的视觉暂留”。^1
音频:声音
声音的三要素为:响度、音调和音色^2
- 响度,又称声强或音量,响度是感觉判断的声音强弱,即声音响亮的程度,根据它可以把声音排成由轻到响的序列。响度的大小取决于音强、音高、音色、音长等条件。响度描述的是声音的响亮程度,表示人耳对声音的主观感受国家标准标志,其计量单位是宋,定义1kHz,声压级为40dB纯音的响度为1宋。
- 音调又称音高。客观上音高大小主要取决于声波基频的高低,频率高则音调高,反之则低,单位用赫兹(Hz)表示。主观感觉的音高单位是“美”,通常定义响度为40方的1kHz纯音的音高为1000美。赫兹与“美”同样是表示音高的两个不同概念而又有联系的单位。
- 音色又称音品,由声音波形的谐波频谱和包络决定。声音波形的基频所产生的听得最清楚的音称为基音,各次谐波的微小振动所产生的声音称泛音。单一频率的音称为纯音,具有谐波的音称为复音。每个基音都有固有的频率和不同响度的泛音,借此可以区别其它具有相同响度和音调的声音。声音波形各次谐波的比例和随时间的衰减大小决定了各种声源的音色特征,其包络是每个周期波峰间的连线,包络的陡缓影响声音强度的瞬态特性。
相对于视频,音频相对不太直观。
音视频的基本流程为:

- 视频的采集数据量非常大,以1080P(Pixels),25fps的RGB8bit格式为例,1秒的数据量$1920\times1080\times3\times25Byte=6220800\times25Byte=5.93262MB\times25=148.3154MB$,1分钟的数据量为$1920 \times 1080 \times3\times25\times60Bytes=8898.92578MB=8.69036GB$,因此需要对视频进行压缩与解压缩以应对视频的存储与传输以及渲染
- 音视频的传输,我们一般只讨论音视频的网络传输与分发。根据发送端与接收端的状态一般可以分为:
- 直播(包括实时视频会议)
- 点播
- 音视频的存储主要是视频数据的压缩与封装,也包括其它视频模式的格式封装,比如常见的3D格式一起其它
- 音视频的渲染指的是将采集、传输的音视频数据在硬件设备上进行呈现
- 音视频处理 - 视频的压缩和解压缩也算音视频的处理,但这里主要指视频画面处理以及音频的调整
- 计算机图形学(Computer Graphics, CG)
- 计算机视觉(Computer Vision, CV)
- 音频处理
- 语音处理(Speech Signal Processing)
这里可以使用Windows的DShowFilter进行演示:

工具软件为GraphStudioNext^9
音视频技术
采集
视频采集
视频的采集是对光照信息的记录,视频的采集相对复杂。记录的设备有:







视频的采集标准充满了历史痕迹。
- 色域
- HDR
- YUV 与 RGB
- 视频制式(PAL、NTSC、SECAM)
色域(色彩空间)
色域是对一种颜色进行编码的方法,也指一个技术系统能够产生的颜色的总和。在计算机图形处理中,色域是颜色的某个完全的子集。颜色子集最常见的应用是用来精确地代表一种给定的情况。例如一个给定的色彩空间或是某个输出装置的呈色范围。

HDR (High Dynamic Range Capture)^5

- HDR10
- HDR12
YUV与RGB
我们当前处理颜色一般采用RGB或RGBA,实际采集的颜色格式为YUV,又称YCbCr。
Y'UV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有Y(Luma,Luminance)视频,也就是灰阶值。到了彩色电视规格的制定,是以YUV/YIQ的格式来处理彩色电视图像,把UV视作表示彩度的C(Chrominance或Chroma),如果忽略C信号,那么剩下的Y(Luma)信号就跟之前的黑白电视频号相同,这样一来便解决彩色电视机与黑白电视机的兼容问题。Y'UV最大的优点在于只需占用极少的带宽。^6


这里便涉及到图像数据的第一次压缩。
YUV格式的采样有4:4:4,4:2:2,4:2:0三种,分别是不同的采样方式^7:

实际的采集格式会使用 YUV422或YUV420以减少数据量
YUV与RGB格式可以根据公式进行互相转换,因此采集使用YUV,实际渲染使用RGB,BT.709下的转换公式如下^8:

视频制式(PAL、NTSC、SECAM)
视频的制式也是源自黑白电视阶段,由于黑白电视的传输带宽以及工作方式,因此传统的视频数据将视频画面分为顶场和底场,实际数据是电子管扫描荧光屏的顺序,由此便有了隔行扫描与逐行扫描。
视频制式主要有三种:NTSC/PAL和SECAM
左右3D/上下3D/红蓝3D


圈出部分即为顶场与底场在运动场景的缺陷

在一场数据中视频数据之外还包含HBI与VBI,其中音频数据很多时候就放在HBI中。
音频采集

使用的工具软件为 Audacity^3
音频的采集主要是采样率、采样精度和音频通道数:
- 音频的采集满足采样定律即$f_s \geq 2f_h$
- 音频的采样精度一般为8、16、24、32,精度越高声音越细腻,以前学习机的游戏一般都是8位的电子音
- 音频的通道数从少到多一般有:1、2、3、4、5、6、7、8、9以及更多,标准如下^4
| Channels | Implicit Channel Positions |
|---|---|
| 1 | Always maps to FrontLeft and FrontRight at full scale in both speakers (special |case for mono sounds) |
| 2 | FrontLeft, FrontRight (basic stereo configuration) |
| 3 | FrontLeft, FrontRight, LowFrequency (2.1 configuration) |
| 4 | FrontLeft, FrontRight, BackLeft, BackRight (quadraphonic) |
| 5 | FrontLeft, FrontRight, FrontCenter, SideLeft, SideRight (5.0 configuration) |
| 6 | FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight (5.1 |configuration) (see the following remarks) |
| 7 | FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight, |BackCenter (6.1 configuration) |
| 8 | FrontLeft, FrontRight, FrontCenter, LowFrequency, BackLeft, BackRight, SideLeft, |SideRight (7.1 configuration) |
| 9 or more | No implicit positions (one-to-one mapping) |
传输
由于视频数据量巨大,因此在视频传输前需要进行压缩,这就是我们常说的编码。当前我们常用的视频编码格式有 H.264以及HEVC(也就是H.265);音频数据量虽然不大,但是也会进行编码。
编码
视频编码标准主要是由ITU-T与ISO/IEC两大组织制定而成,其发展如下表所示^10。
| 年份 | 标准 | 制定组织 | 解除著作权保护(DRM-free) | 主要应用 |
|---|---|---|---|---|
| 1984 | H.120 | ITU-T | 是 | |
| 1990 | H.261 | ITU-T | 是 | 视频会议、视频通话 |
| 1993 | MPEG-1第二部分 | ISO/IEC | 是 | 影音光盘(VCD) |
| 1995 | H.262/MPEG-2第二部分 | ISO/IEC、ITU-T | 否 | DVD影碟(DVD-Video)、蓝光(Blu-Ray)影碟、数字视频广播(DVB)、SVCD |
| 1996 | H.263 | ITU-T | 视频会议、视频通话、3G手机视频(3GP) | |
| 1999 | MPEG-4第二部分 | ISO/IEC | 否 | |
| 2003 | H.264/MPEG-4 AVC | ISO/IEC、ITU-T | 否 | 蓝光(Blu-Ray)影碟、高清DVD(HD DVD)、数字视频广播(DVB)、流媒体、视频录制 |
| 2013 | 高效率视频编码(H.265/HEVC) | ISO/IEC、ITU-T | 否 | 超高清蓝光光盘(UHD Blu-Ray)、数字视频广播(DVB)、流媒体、视频录制 |
| 2020 | 多功能视频编码(H.266/VVC) | ISO/IEC、ITU-T | 否 | 未普及 |
中国也提出了自己的数字音视频编解码技术标准AVS(Audio Video Coding Standard)^11
AVS2的压缩效率比上一代标准AVS+和H.264/AVC提高了一倍,超过同类型标准HEVC/H.265。AVS2还支持:三维视频、多视角和虚拟现实视频的高效编码;立体声、多声道音频的高效有损及无损编码;监控视频的高效编码;面向三网融合的新型媒体服务。
AVS3增加了对8K分辨率的支持,该技术将使用于中央广播电视总台8K超高清频道。
优势
中国方面称,AVS与其他格式相比有以下优势:
- AVS的性能高,与国际主流格式旗鼓相当。
- AVS的复杂度低,编码复杂度比国际主流格式低,速度更快,软硬件实现成本都低于其他格式。
- AVS编码技术为中国主导的知识产权,专利授权模式简单,费用较其他格式(自由格式除外)低。
劣势
- 缺少可用的软件编解码器,普及性低
H264与H265
当前常用的编码格式为H264与H265
H.264,又称为MPEG-4第10部分,高级视频编码(英语:MPEG-4 Part 10, Advanced Video Coding,缩写为MPEG-4 AVC)是一种面向块,基于运动补偿的视频编码标准 。
高效率视频编码(High Efficiency Video Coding,简称HEVC),又称为H.265和MPEG-H第2部分,是一种视频压缩标准,被视为是ITU-T H.264/MPEG-4 AVC标准的继任者。
HEVC被认为不仅提升影像质量,同时也能达到H.264/MPEG-4 AVC两倍之压缩率(等同于同样画面质量下比特率减少到了50%)。
H264与H265文件的分析工具,可以使用H264BSAnalyzer^12
常见参数与原理
- I帧,P帧和B帧
MPEG-2使用不同种类的帧来压缩数据。I帧是帧内编码帧,I帧描述了图像背景和运动主体的内容,可以作为P帧和B帧的参考帧。P 帧也被称为预测帧,它包含自身与前面 I 帧、P 帧或 B 帧中的信息差异。B 帧类似于 P 帧,但它需要参考其前面一个I帧或P帧及其后面的一个P帧来生成一张完整的视频画面。
- Profile
Profile是对压缩视频的特性描述

profile越高,就说明采用了越高级的压缩特性^13

H265 Main10 Profile 支持 HDR视频编码。
H264以及H265是编码格式,需与mp4,avi等容器格式进行区分。
编码方式
当前的编解码主要有两种:
- 软件编解码
- 硬件编解码
软件编解码可以使用libav,libx264等库即可;硬件编码在PC上intel,amd以及Nvidia均在最新的cpu或GPU上提供了硬件编码接口,基于其SDK开发即可,在嵌入式方面很多mcu提供了硬件编解码模块,也有公司专门提供硬件编解码芯片。

网络传输协议
随着网络架构的变迁、媒体技术发展、音视频场景迭代,基于流媒体的技术也是推陈出新。但由于流媒体协议属于应用层技术,缺乏统一标准,因此相关技术更加五花八门。但抓住流媒体协议的核心,各种协议理解起来也就容易了,各种流媒体协议都是将视频分解为多个块,然后发送给视频播放端,播放端接收、重新组合、完成播放。根据传输是否顺序传输,还有实时流式传输和顺序流式传输的区别。接下来我们就介绍常用的几种常用技术:RTP、RTSP、RTMP、HLS、SRT、WebRTC。

-
RTP - RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-time Transport Control Protocol)一起使用,RTP使用偶数端口号收发数据,相应的RTCP则使用相邻的下一位奇数端口号。当应用程序启动一个RTP会话时,将同时占用两个端口,分别供RTP和RTCP使用。RTP负责数据传输,RTCP负责收集相关连接信息,实时监控数据传输和服务质量。
-
RTSP - 比RTP多了一个S的RTSP是RealTime Streaming Potocol 实时流协议,是传输层(RTP是传输层)之上的应用层协议,可选择UDP、组播UDP、TCP、RTP为传输机制。RTSP定义了双向多应用程序如何有效地通过IP网络传送多媒体数据。RTSP充当多媒体服务器的网络远程控制,使实时数据如音频与视频的快进快退、中止、播放成为可能。

-
RTMP - 另一个名字很相似的RTMP是Real Time Messaging Protocol实时消息传输协议,是Adobe公司为Flash播放器和服务器之间开发的音视频数据传输的开放协议,一般传输flv或f4v格式的媒体流。RTMP是工作在TCP之上的协议,使用端口1935,能够保持长连接,并为用户提供低延时通信。RTMP是目前低延时直播应用最普遍的协议,几乎是全部编码器标准输出协议,是PC机打开浏览器就能播放(通常浏览器默认有Flash),也是全部CDN支持的最好的直播分发协议。
-
HLS - HLS是HTTP Live Streaming,由Apple公司提出的基于短连接HTTP的媒体流传输协议,用于实时音视频流的传输。由于其实基于HTTP协议的,所以网络支持很好,能方便穿透防火墙或代理服务器。但HLS由于采用切片式的多媒体文件,因为切片需要时间编码,所以切片的延时不可避免。
-
SRT - SRT由Haivision和Wowza在UDT的基础上,针对音视频实时性提出的协议。SRT是基于UDT的协议(UDT协议是基于UDP的传输协议,具有非常良好的丢包重传机制,丢包重传的控制消息非常丰富,同时支持ACK、ACKACK、NACK。这里有必要提一下UDT,UDT是基于UDP,并引入新的拥塞控制和数据可靠性控制机制,UDT是面向连接的双向的应用层协议。SRT拥有三大特点,安全,可靠,低延迟。安全方面,SRT支持AES加密,保障端到端的视频传输安全。可靠性方面,SRT通过前向纠正技术(FEC)保证传输的稳定性。低延迟方面,由于SRT建立在UDT协议之上,解决了UDT协议传输延迟高和复杂的传输时序问题,可以做到支持高吞吐量文件和超清视频的实时传输。
-
WebRTC - WebRTC是Web Real-Time Communication网页实时通信,是一个支持网页浏览器进行实时语音对话或视频对话的技术而无需任何插件。WebRTC使用是RTP分装码流,跟视频监控,IPTV,会议电视一样都是RTP承载媒体流,只不过WebRTC信令遵守ICE框架,走自定义信令,IPTV领域走RTSP信令,视频监控走GB28181或者onvif信令,会议电视走h323或SIP协议。另外,WebRTC的码流采用SRTP进行加密,且WebRTC优先使用VP9、VP8、H.264,不支持H.265。
GB28181
GB28181协议全称为GB/T28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100)归口,公安部一所等多家单位共同起草的一部国家标准(以下简称28181)。
GB28181主要解决:不同平台之间的对接和互通问题。
协议属于应用层的协议。
国标GB28181为推模式,将直播内容推送至服务器。
基本流程: 注-获-答-请-推
- 相机注册到的28181服务器上
- 相机(IP camera)----> 28181服务器 (注册 Register)
- 28181服务器向相机获取目录
- 相机(IP camera)<---- 28181服务器 (获取目录 Get Catalog)
- 相机答复28181服务器的请求
- 相机(IP camera)----> 28181服务器 (响应目录 Response Catalog)
- 28181服务器请求相机发流给28181服务器
- 相机(IP camera)<---- 28181服务器 (请求流Invite stream)
- 相机推送流给28181服务
- 相机(IP camera)----> 28181服务器 (推流 push stream)
点播与直播
- 点播(VOD)就是根据观众的要求播放节目的视频点播系统,把用户所点击或选择的视频,传输给所请求的用户。
- 直播,即将视频流实时推送到用户
点播与直播依赖流媒体服务器进行流媒体分发。
存储
视频的存储也就是将采集到的视频存储为文件。常见的视频文件格式有:
- avi
- rmbv
- mp4
- mov
- avi
- mkv
- flv
- ...
这些格式是编码后的音视频流的容器格式,也就是是H264或H264视频流的外壳。
渲染
音视频的渲染也就是将采集到的音视频数据在硬件上进行播放,这里分为视频渲染与音频渲染。
音视频的渲染虽然是分别进行的,但是需要进行同步,否则就会出现音画不同步的情况。

如图便是一个解码器,可以对视频流进行解码然后进行播放。
当然进行渲染前对压缩过的音视频进行解码。对于音频,如果播放设备不支持原始的采样率需要对音频进行重采样。音频的播放频率可能不稳定,因此有时需要进行数据填充或者丢弃从而进行音视频同步。
视频的解码有软件解码与硬件解码两种,软解对cpu负载较大,推荐使用硬件解码。
视频画面的绘制也有通过cpu绘制和通过GPU绘制两种。cpu绘制对系统负载加大,GPU绘制则能充分发挥显卡的性能。
这里一般使用计算机图形学的方式进行视频渲染,通常是使用OpenGL,在浏览器上一般使用Canvas,通过 WebGL 进行图像绘制。
延迟
图像的延迟主要是传输、编解码的延迟,但是在渲染的过程中由于显示器的刷新率也会增加延迟,因此在进行渲染开发时,需要注意。
处理
视频图像的分析处理主要通过计算机视觉进行。计算机视频与计算机图像学研究的范围不同。
计算机视觉当前可以分为特征提取(传统的计算机视觉)和端到端学习(基于深度学习的计算机视觉)
传统
传统中,特征提取是很重要的一步,在特征提取过程中,会涉及到比如:边缘检测、角点检测、对象检测等,这些算法都属于传统的计算机视觉算法。传统的难点在于,每张图像的特征不尽相同,不同类别的对象最好要用不同种类的特征来描述。随着所要区分的类别数目逐渐增多,这一类分类和识别问题会变得非常麻烦,甚至难以实现。
传统的计算机视觉工具箱为OpenCV
深度学习
卷积神经网络是目前计算机视觉中使用最普遍的模型结构。LeNet-5基本上为CNN在2012年以后的爆发奠定了基调。
当前基于深度学习的计算机视觉应用在:
- 图像分类
- 目标检测
- 图像分割
- 关键点检测
- 图像生成
- 场景文字识别
- 度量学习
- ...

图像分类的经典模型有 ResNet/GoogleLeNet/AlexNet

目标检测的经典模型有 Faster R-CNN, MobileNet, ResNet

图像分割的经典模型有ICNet/Deeplab,当前较为优秀的为Transformer.这是基于注意力的深度神经网络(DNN)在CV上的应用。

Pytorch的 torchvision库中有关键点检测的模型keypointrcnn_resnet50_fpn()网络模型,其可以对17个人体关键点进行检测。

图像生产的经典模型有生成对抗网络(Generative Adversarial Network, 简称GAN) ,图像生成也可用于超分辨率重建以及图像增强。

OCR识别算法,当前相对成熟。
度量学习是一种对样本对学习区分性特征的方法,目的是在特征空间中,让同一个类别的样本具有较小的特征距离,不同类的样本具有较大的特征距离。随着深度学习技术的发展,基于深度神经网络的度量学习方法已经在许多视觉任务上提升了很大的性能,例如:人脸识别、人脸校验、行人重识别和图像检索等等。
常用的流媒体处理框架
- v4l2
- SDL
- DirectSound
- DShowFilter
- XAudio2
- gstreamer
- ffmpeg