使用winmm.dll在C#中录制

时间:2013-04-01 07:07:52

标签: c#

我想在我的应用程序中使用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);

但波形文件的格式与我设置的不完全相同。 如何在记录时设置比特率?

1 个答案:

答案 0 :(得分:0)

您需要致电"设置"在你打电话之前#34;记录"。

来自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和channels。

bytespersec = bitspersample * channels * samplespersec / 8
alignment = bitspersample * channels / 8