用winmm.dll在c#中记录
本文关键字:记录 winmm dll | 更新日期: 2023-09-27 18:06:41
我想记录在我的应用程序与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);
但是wave文件的格式和我设置的不完全一样。记录时如何设置比特率?
您需要在调用"record"之前调用"set"。
从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