0

我想用 winmm.dll 在我的应用程序中记录,这是我的代码:

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);

string command = "set capture time format ms bitspersample 16 channels 1 samplespersec 16000 alignment 4";
mciSendString(command, "", 0, 0);

但波形文件的格式与我设置的不完全一样。录制时如何设置比特率?

4

1 回答 1

1

在调用“记录”之前,您需要先调用“设置”。

来自MSDN

创建存储数据的文件时,定义了波形音频数据的几个属性。这些属性描述了数据在文件中的结构,一旦开始记录就无法更改

作为旁注;根据我的经验,您需要一次性设置所有参数。您不能单独设置通道,然后再设置 bitspersample。我还没有在任何地方找到这个文档,但是反复试验+谷歌这么说。

这是我的做法:

string command = "set recsound time format ms";
command += " bitspersample " + WaveBitsPerSample;
command += " channels " + WaveChannels;
command += " samplespersec " + WaveSamplesPerSec;
command += " bytespersec " + WaveBytesPerSec;
command += " alignment " + WaveAlignment;
error = mciSendString(command, _mciReturnData, 0, IntPtr.Zero);

bytespersec 与 bitspersample、channels 和 samplespersec 相关,对齐方式与 bitspersample 和通道相关。

bytespersec = bitspersample * channels * samplespersec / 8
alignment = bitspersample * channels / 8
于 2013-06-12T10:19:35.157 回答