
音视频处理技术壁垒较高,入门难。本文仅抛砖引玉,梳理下音视频数据处理流程。
音视频处理虽难但其遵循一定的处理流程,并且整个流程可以划分为不同的阶段,通过依次理解各个阶段,逐个击破,再整合起来后便可以深入地理解音视频处理的原理和实现方式。音视频处理流程包括如下几个关键阶段:复用与解复用、编码与解码、渲染和采集。

接下来,我们将逐一介绍这些阶段及其相关技术。
复用与解复用
复用与解复用互为逆过程,复用是指将多个不同类型的数据流(如音频、视频、字幕等)合并成一个单一的传输流的过程,而解复用则是从传输流中分离出各个独立的数据流。
常用的复用器和解复用器包括MP4、MKV、FLV、TS等。将音频流、视频流和字幕流合并到MP4文件中就是复用;将MP4文件中的音频流、视频流和字幕流分离出来就是解复用。
编码与解码
假设在一个带宽不受限制、电脑或播放设备不受限制的理想情况下,音视频数据是无需编码/解码的,但是现实世界中,网络传输、硬盘存储等都存在限制,因此需要通过编码技术将音视频数据压缩,以节省带宽和存储空间。解码则是编码的逆过程。
编码是将原始数据(如音频、视频、字幕等)转换为压缩后的数字信号的过程,而解码则是将压缩后的数字信号还原为原始数据的过程。编码和解码的过程需要使用相应的编码器和解码器,常见的编码器和解码器包括AAC、MP3、H.264等。
渲染
渲染是将音视频数据转换为可视可听的过程,涉及到音频渲染和视频渲染两个独立过程,音频渲染是将数字音频信号转换为可听见的声音的过程,视频渲染是将数字视频信号转换为可视图像的过程。音频渲染时可以将数据发送给设备或AudioTrack进行播放,视频渲染时可以将数据发送给设备或OpenGL进行渲染。
采集
采集涉及到音频信息采集和视频信息采集两个独立的过程。音频信息采集常借助麦克风甚至是声卡等设备,将模拟信号经过采样和量化后转换为数字信号;视频信息采集则借助摄像头等设备,将光学信号转换为数字信号。
音频信息采集时,保存的音频数据会涉及到采样率、位深、声道数等参数的设置。

采样率

位深
音频数据所占的字节数可以通过如下公式计算
size_t byte_per_second = sampleRate * bitDepth * channels / 8;
size_t total_byte = byte_per_second * duration_second;而视频信息采集则涉及到分辨率、帧率、码率等参数的设置。
注意:本文所述只是普通的音视频处理流程,而对于流媒体来讲,在解复用前还需要解协议,同理,复用后也需要协议封装。