音频与视频捕获:压缩与应用详解
1. 音频压缩基础
在音频捕获过程中,未经压缩的音频文件大小增长迅速,例如通过某些方式捕获的音频,其文件大小增长速率与标准音频 CD 相近,约每小时 700 MB。不过,DirectShow 提供了众多转换滤波器,可将音频压缩至未压缩大小的一小部分。
要在滤波器图中添加音频压缩器,需先枚举所有 CLSID_AudioCompressorCategory
滤波器。这是因为 DirectShow 将音频压缩器视为具有各自类 ID 的独立对象,但我们通常无法直接知晓特定音频压缩器的类 ID,而调用 CreateClassEnumerator
方法可以帮助我们了解 DirectShow 可用的所有音频压缩器的类 ID。
以下是枚举音频压缩器的代码:
// 枚举所有的音频压缩器。
// 将匹配名称的压缩器返回给调用者。
HRESULT EnumerateAudioCompressorFilters(void** gottaCompressor,
wchar_t* matchName)
{
// 再次借鉴 DX9 SDK 的代码。
// 创建系统设备枚举器。
ICreateDevEnum *pSysDevEnum = NULL;
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,