音视频基础知识
音视频基础
1. 基础概念
什么是音视频技术?音视频技术其实就是音频技术和视频技术的一个统称,在技术处理上,其实音频和视频是要分开处理的。
而且要注意一点,音视频从开始收集数据到最后展示都是离不开硬件设备的,所以在以后的开发过程中,要做好与硬件打交道的心理准备了。
音视频的主要处理过程:
采集。比如从客户端的摄像头、麦克风和本地原始文件等,获得基础的音视频数据;
预处理。在这个阶段其实就是对音视频进行修剪操作,毕竟收集到的原始数据,不一定是想要在最后呈现的效果,因此在这里可能会进行美颜、裁剪、AI识别处理、声音A3处理等;
编码。在经过预处理或者没处理过的原始文件,一般都会比较大,不适合进行传输,这个时候就需要进行压缩、转码之类的操作,减少文件大小,然后再进行传输,执行编码的工具叫编码器,压缩数据的算法叫做编码格式;
解码。压缩数据传输完之后,就需要解码成原始文件一样的数据才能使用,用来解码的工具就是解码器了,不过通常编码器和解码器是一块的,统称为编解码器codec;
渲染与展示。接收到原始数据文件之后,就可以通过硬件或者软件进行渲染与展示了,硬件例如显示器、音响等,软件有SurfaceView;
文件封装/解封装。其实从采集,音频和视频都是分开进行处理的,但是在进行传输的时候,我们需要同一套音频文件是在一块的,所以需要进行一次文件封装。存放音视频的容器叫封装容器,文件类型叫封装格式;
网络协议打包。音视频文件在网络中传输的时候,一般都会有一个特定的协议,也就是流媒体协议。
音视频采集到封装流程图:

音视频播放流程:

1.1. 音频与视频的定义
- 音频:指的是人类能够听到的声音,包括讲话、音乐和其他环境声音。在技术上,音频通常指由麦克风捕捉并转换成电信号的声音波形,这些信号可以被记录、处理和播放。
- 视频:是指一系列快速连续显示的图像(帧),给人以运动的错觉。视频可以是实况录制的内容或是动画制作。在数字领域,视频是由一组按照特定顺序排列的像素组成的图像序列,通过电子设备如摄像头等进行捕捉,并可经由计算机处理和存储。
1.2 数字信号与模拟信号
- 模拟信号:是一种连续变化的物理量,直接表示信息的变化形式。例如,传统的电话线传输的声音信号就是一种模拟信号。模拟信号容易受到噪声的影响,导致质量下降。
- 数字信号:则是将信息转化为离散的数值表示,通常使用二进制数来表示。数字信号具有较强的抗干扰能力,易于加密和压缩,因此更适合于现代通信和数据处理系统中。例如,CD上的音频数据、数字电视信号都是采用数字信号形式。
1.3 编解码基本原理
编解码器(Codec)用于对数据进行编码和解码的过程:
- 编码:这个过程涉及将原始数据(无论是音频还是视频)转换为更有效的格式,以便于存储或传输。编码通常包括压缩步骤,旨在减少文件大小而不显著降低质量。不同的编码标准(如音频的MP3、AAC,视频的H.264、H.265)使用不同的算法和技术实现这一目标。
- 解码:这是编码的逆过程,目的是将已经编码的数据还原为其原始格式,以便播放或进一步处理。解码器必须准确地理解并执行与编码器相同的算法,才能正确地恢复数据。
2. 音频处理
2.1. 音频格式(如MP3, WAV, AAC等)
音频格式是指存储数字音频信息的文件格式。常见的音频格式包括但不限于:
- MP3 (MPEG-1 Audio Layer 3):一种非常流行的音频压缩格式,能够显著减少文件大小,同时保持较高的音质。
- WAV (Waveform Audio File Format):由微软和IBM联合开发的一种标准音频文件格式,用于保存未压缩的音频数据,音质非常高但文件较大。
- AAC (Advanced Audio Coding):一种专为提高音质和效率而设计的音频编码标准,通常提供比MP3更好的音质和更小的文件大小。
2.2. 音频编解码器(Codec)介绍
音频编解码器是指用于执行音频数据压缩和解压缩过程的技术或算法。它们是实现不同音频格式的核心。编解码器分为:
- 有损编解码器:如MP3、AAC,在压缩过程中会丢失一些人耳不易察觉的信息以减小文件大小。
- 无损编解码器:如FLAC、ALAC,能够在不损失音质的前提下压缩音频文件,但压缩率相对较低。
2.3. 音频采样率和比特深度
采样率(Sample Rate)指的是每秒从连续信号中提取并组成离散信号的样本数,单位为kHz。更高的采样率可以捕捉更多的音频细节,典型值包括44.1kHz、48kHz等。
比特深度(Bit Depth)决定了每个采样点的数据量,影响到音频的动态范围和噪声水平。CD音质的标准是16位,而专业录音可能使用24位甚至更高。
2.4. 声道(Mono, Stereo, Surround Sound)
单声道(Mono):音频只包含一个声道,所有声音都被混合成一个信号播放。
立体声(Stereo):使用两个独立的声道来模拟人类听觉的空间感,左右两侧的声音可以有所不同。
环绕声(Surround Sound):通过多个声道创建出全方位的声音环境,常见于家庭影院系统,如5.1或7.1声道配置。
2.5. 音频特效与处理(均衡、混响等)
- 均衡(Equalization, EQ):调整不同频率段的音量平衡,用来改善音质或创造出特定的声音效果。
- 混响(Reverb):模拟声音在空间中的反射效果,给声音添加深度和空间感,使听众感觉到声音仿佛是从某个虚拟空间中发出的。
3. 视频处理
3.1. 视频格式(如MP4, AVI, MKV等)
视频格式指的是存储视频信息的文件格式,每种格式有其特定的应用场景和兼容性。常见的视频格式包括:
- **MP4 (MPEG-4 Part 14)**:一种非常流行的多媒体容器格式,支持视频、音频和字幕等多种数据流,广泛用于在线视频分享。
- **AVI (Audio Video Interleave)**:由微软开发的一种多媒体容器格式,特点是高兼容性,但不支持现代的一些高级功能。
- **MKV (Matroska Video)**:一种开源的多媒体容器格式,可以容纳无限数量的音频、视频和字幕轨道,并支持多种编解码器。
3.2. 视频编解码器(Codec)介绍
视频编解码器是用来压缩和解压缩视频数据的技术或算法。主要分为两大类:
- 编码器:将原始视频数据转换为压缩格式以减少文件大小或适合传输。
- 解码器:执行相反的过程,将压缩的数据恢复成可用于播放的格式。
常见编解码器包括H.264/AVC、H.265/HEVC、VP9等,其中H.264是目前最广泛使用的标准之一,而H.265提供了更高的压缩效率。
3.3. 分辨率和帧率
- 分辨率:表示视频画面中像素的数量,通常用宽度×高度来表示(例如1920x1080)。分辨率越高,图像越清晰,但所需的存储空间也越大。
- 帧率(FPS, Frames Per Second):指每秒钟显示的图像帧数。较高的帧率可以使视频看起来更加流畅,特别是对于快速移动的内容。
3.4. 色彩空间与色彩深度
- 色彩空间:描述了颜色如何被编码在数字视频中的方式,常见的色彩空间有RGB、YUV等。YUV色彩空间特别适用于视频处理,因为它能够更好地模拟人类视觉对亮度和色度的感知。
- 色彩深度:定义了每个像素点的颜色信息量,通常以位(bit)为单位表示。更高的色彩深度意味着更丰富的颜色表现能力,例如8位色彩深度可表示256种颜色级别,而10位则可提供1024级。
3.5. 视频压缩技术(有损与无损压缩)
- 有损压缩:通过去除一些人眼难以察觉的信息来大幅减少文件大小,但可能会导致一定程度的质量损失。H.264和H.265就是采用有损压缩技术的例子。
- 无损压缩:确保压缩后视频质量与原视频完全相同,不会丢失任何信息,但压缩比率较低,因此文件大小减少不如有损压缩明显。FFV1和HuffYUV是两种无损视频压缩编解码器的例子。
4. 流媒体技术
4.1. 流媒体协议(RTMP, HLS, DASH等)
流媒体协议是实现视频或音频数据从服务器到客户端实时传输的技术基础。以下是几种常见的流媒体协议:
- **RTMP (Real-Time Messaging Protocol)**:由Adobe Systems开发,主要用于Flash播放器中进行音视频的实时传输。尽管其在现代应用中的使用有所减少,但仍然是许多直播平台用于推流的基础协议。
- **HLS (HTTP Live Streaming)**:由苹果公司开发,支持自适应比特率流媒体,即根据网络状况自动调整视频质量。它通过HTTP协议传输视频片段和索引文件,非常适合移动设备和跨平台使用。
- **DASH (Dynamic Adaptive Streaming over HTTP)**:一种开放标准,类似于HLS,也提供了基于HTTP的自适应比特率流媒体解决方案。DASH因其高效性和灵活性,在非Apple生态系统中被广泛采用。
4.2. 直播与点播
- 直播:指的是内容实时生成并同时传输给观众的过程,观众可以即时观看事件的发生,如体育赛事、新闻报道等。直播对实时性要求较高,通常需要较低的延迟时间。
- 点播:允许用户在任何时候选择并观看特定的内容,而不必等待节目开始。这种模式为用户提供了极大的便利性,可以根据个人喜好随时访问海量的节目库。
4.3. 内容分发网络(CDN)
内容分发网络(Content Delivery Network, CDN)是由分布在不同地理位置的服务器组成的网络系统,旨在更有效地向用户提供内容。CDN的主要功能包括:
- 加速内容传输:通过将内容缓存到离用户最近的服务器节点上,减少延迟,提高加载速度。
- 平衡负载:分配流量至多个服务器以避免单一服务器过载,增强服务稳定性和可用性。
- 提高安全性:提供额外的安全层,帮助抵御DDoS攻击等网络安全威胁。
5. 实时通信
5.1. WebRTC简介
WebRTC(Web Real-Time Communication)是一个支持网页浏览器和移动应用程序进行实时语音对话、视频聊天和数据共享的技术项目。它是一个开源项目,旨在使开发者能够轻松地在应用中嵌入实时通信功能而无需使用插件或下载额外的软件。WebRTC提供了高质量的通信能力,并且可以直接通过简单的API接口进行访问。
5.2. 实时传输协议(RTP/RTCP)
- **RTP (Real-time Transport Protocol)**:用于在网络上传输音视频数据的协议。RTP专为处理延迟敏感的应用设计,如实时音频和视频流。
- **RTCP (RTP Control Protocol)**:与RTP一起工作,提供关于当前会话的信息,包括发送者报告和接收者报告,帮助监控服务质量并同步多媒体流。
5.3. 网络适应性(Jitter Buffer, FEC等)
- Jitter Buffer:一种技术,用来减少因网络抖动导致的数据包到达时间差异问题。它通过暂时存储接收到的数据包来平滑播放过程。
- **FEC (Forward Error Correction)**:一种增加冗余信息的方法,允许接收端检测并纠正某些类型的传输错误,而不需要请求重新发送数据包。这在提高实时通信的质量方面特别有用,因为它减少了由于重传造成的延迟。
6. 音视频同步
6.1. 时间戳(PTS/DTS)
- PTS (Presentation Timestamp) 和 DTS (Decoding Timestamp) 是MPEG标准中的概念,用于管理音视频流中的解码和展示顺序。PTS指定了何时应显示帧,而DTS则指定了何时应该解码帧。这对正确处理B帧(双向预测帧)至关重要,因为在某些情况下,帧的解码顺序可能不同于其播放顺序。
6.2. 同步机制与算法
为了保证音视频的同步播放,需要采用特定的同步机制和算法:
- 基于参考时钟的同步:系统通常会选择一个参考时钟作为基础,所有媒体流的时间戳都根据这个参考时钟进行调整,从而实现同步。
- 缓冲区管理:通过合理的缓冲区大小设置,可以有效解决网络波动带来的影响,确保数据按照正确的顺序和时间点被处理。
- 动态调整策略:根据实际播放情况动态调整播放速度或者丢弃部分帧,以尽量减小不同步现象的发生。