2. 音视频基础与移动端约束
移动端音视频开发的第一道门槛,不是 API 调用,而是对“数据量从哪来、被什么参数放大、又被什么机制压缩”的直觉。音频和视频虽然都叫“流”,但它们的参数体系、压缩逻辑和硬件瓶颈并不相同。理解这些参数,才能在真机上做出“不卡、不烫、不糊、不炸内存”的取舍。
音频三要素:采样率、位深、声道数
音频的本质是连续声压随时间变化的波形。要把波形变成数字信号,需要按固定时间间隔“拍照”,这个间隔的倒数就是采样率(Sample Rate),单位 Hz。人耳可听范围约 20 Hz~20 kHz,根据奈奎斯特采样定理,采样率至少要是最高频率的 2 倍,因此 44.1 kHz 成为 CD 标准,而移动端语音常用 16 kHz、视频会议常用 48 kHz。
位深(Bit Depth)决定每个采样点用多少比特表示振幅,常见 16 bit、24 bit。16 bit 可表示 2¹⁶ = 65536 个量化等级,动态范围约 96 dB,足以覆盖大多数消费场景。位深越高,量化噪声越低,但数据量线性增长。
声道数决定同时记录几路波形,单声道 1 路、立体声 2 路。三者共同决定未压缩音频码率:
PCM 码率(bps) = 采样率 × 位深 × 声道数
例:48000 × 16 × 2 = 1,536,000 bps ≈ 1.54 Mbps
例:16000 × 16 × 1 = 256,000 bps = 256 kbps
可以看到,仅一路 48 kHz 立体声 PCM 就接近 1.5 Mbps,一分钟约 11 MB。移动端若直接传输 PCM,流量和存储都不可接受,因此必须引入音频编码(如 AAC、Opus),把码率压到 32~128 kbps。
视频四要素:分辨率、帧率、位深与码率
视频是“连续图像序列 + 时间轴”。分辨率指单帧像素数,如 1280×720(720p)、1920×1080(1080p)。帧率(FPS)指每秒画面数,24 fps 有电影感,30 fps 适合常规直播,60 fps 适合游戏和运动画面。
未压缩视频的数据量同样惊人。以 1080p、30 fps、YUV420(每像素平均 12 bit)为例:
单帧比特 = 1920 × 1080 × 12 = 24,883,200 bit ≈ 24.9 Mbit
未压缩码率 = 24.9 Mbit × 30 ≈ 746 Mbps
一分钟 ≈ 5.6 GB
这就是为什么视频必须经过编解码(Codec)。编码器通过帧内压缩(去除单帧空间冗余)和帧间压缩(利用 I/P/B 帧去除时间冗余),把 746 Mbps 压到 2~8 Mbps,压缩比可达 100~300 倍。常见编码标准有 H.264(兼容性最好)、H.265/HEVC(同画质省约 40% 码率)、VP9 和 AV1(开源、免专利费但编码复杂度高)。
码率(Bitrate)是编码后的数据速率,分 CBR(恒定码率,网络友好)和 VBR(可变码率,画质更优)。码率与分辨率、帧率、运动复杂度正相关:画面越复杂、运动越剧烈,同样画质需要的码率越高。移动端常用经验值是 720p@30fps 约 2~4 Mbps,1080p@30fps 约 4~8 Mbps。
移动端硬件限制:参数不是想调就能调
桌面端可以靠 CPU 软编硬扛,移动端不行。手机 SoC 里通常有独立的硬件编解码器(如高通 Hexagon、苹果 VideoToolbox、联发科 APU),它们功耗低、延迟小,但支持的分辨率、帧率、码率档位和编码标准由芯片型号决定。例如某些中低端芯片只支持 H.264 硬编到 1080p@30,强行上 4K 或 H.265 会回退到软编,导致发热、掉帧甚至崩溃。
内存带宽也是硬约束。一帧 1080p YUV420 约 3 MB,若同时存在采集缓冲、预览缓冲、编码输入缓冲和编码输出缓冲,很容易占用几十 MB。再加上相机、显示、AI 处理共享带宽,参数调高会直接挤压其他模块。
此外,电池与散热决定了持续编码的可持续性。长时间 1080p@60 硬编会让机身温度上升,系统触发降频后编码帧率下降,观众端出现卡顿。因此移动端通常采用“分辨率优先、帧率次之、码率自适应”的策略,并在检测到温度或网络异常时动态降档。
MediaCodecInfo(Android)或 VTCompressionSession(iOS)查询硬件编解码器能力,再决定采集和编码参数,不要直接照搬桌面端配置。参数取舍的工程判断
面对具体场景,可以按以下顺序做决策:先确定分辨率(受屏幕尺寸和网络带宽限制),再确定帧率(受内容运动程度和硬件能力限制),然后根据画质目标选择编码标准,最后用码率在画质和带宽之间平衡。音频则优先保证采样率和位深满足场景需求,再用 Opus 或 AAC 压缩到合适码率。
例如一个移动端视频通话场景:采集 640×480@30fps,音频 16 kHz/16 bit/单声道,视频用 H.264 硬编 800 kbps,音频用 Opus 24 kbps。总码率不到 1 Mbps,在 4G 网络下可稳定传输,同时手机发热可控。若换成 1080p@60fps,码率需 4~8 Mbps,不仅网络压力大,中低端机型也可能无法硬编,必须降级。
理解这些参数之间的乘法关系和硬件边界,才能在移动端做出既满足体验又不越界的工程选择。参数不是孤立数字,而是一条从采集、编码、传输到解码播放的完整链路,每一环都会放大或约束前一环的代价。