gpt4 book ai didi

c++ - 压缩 PCM 数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:43 25 4
gpt4 key购买 nike

我正在使用 WinAPI - Wave 函数来创建一个录音程序,该程序可以对麦克风录音 X 秒。在网上搜索了一下,发现PCM数据太大,用sockets发送会有问题...

我怎样才能把它压缩成更小的东西?任何简单/“便宜”的方式?

我还注意到,当我使用 Wave API 函数声明格式时,我使用了以下代码:

WAVEFORMATEX pFormat;
pFormat.wFormatTag= WAVE_FORMAT_PCM; // simple, uncompressed format
pFormat.nChannels=1; // 1=mono, 2=stereo
pFormat.nSamplesPerSec=sampleRate; // 44100
pFormat.nAvgBytesPerSec=sampleRate*2; // = nSamplesPerSec * n.Channels * wBitsPerSample/8
pFormat.nBlockAlign=2; // = n.Channels * wBitsPerSample/8
pFormat.wBitsPerSample=16; // 16 for high quality, 8 for telephone-grade
pFormat.cbSize=0;

如您所见,pFormat.wFormatTag= WAVE_FORMAT_PCM;也许我可以插入其他东西而不是 WAVE_FORMAT_PCM,这样它会立即被压缩?我已经检查了 MSDN 的其他值,尽管它们在我的 Visual Studio 中都不适合我...

那我该怎么办呢?

谢谢!

最佳答案

最简单的方法是将采样率从 44100 降低到更易于管理的值,例如 22050、16000、11025 甚至 8000。大多数语音编解码器无论如何都不会高于 16000 赫兹。较旧的针对 8khz 进行了优化。

下一步是寻找编解码器。 Windows Audio Compression Manager 可以使用一些编解码器,但几乎所有这些都可以追溯到 Windows 95,并且在解压缩后以现代标准来看听起来很糟糕。

您始终可以转换为 WMA实时使用 Format SDK 或 Media Foundation API。或者只是去获得一个开源 MP3 库,如 LAME .

关于c++ - 压缩 PCM 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com