我想用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文件的格式并不完全像我设置的那样。录制时如何设置码率?
发布于 2013-06-12 18:19:35
在调用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、channel和samplespersec相关,对齐与bitspersample和channel相关。
bytespersec = bitspersample * channels * samplespersec / 8
alignment = bitspersample * channels / 8https://stackoverflow.com/questions/15739164
复制相似问题