首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用winmm.dll在C#中记录

使用winmm.dll在C#中记录
EN

Stack Overflow用户
提问于 2013-04-01 15:07:52
回答 1查看 2.8K关注 0票数 0

我想用winmm.dll在我的应用中录制,下面是我的代码:

代码语言:javascript
复制
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文件的格式并不完全像我设置的那样。录制时如何设置码率?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-12 18:19:35

在调用record之前,需要先调用set。

来自MSDN

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

顺便说一句,根据我的经验,你需要一次设置所有参数。你不能单独设置通道,然后再设置bitspersample。我在任何地方都没有找到这个文档,但是试验和错误+谷歌说是这样的。

下面是我是如何做到的:

代码语言:javascript
复制
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相关。

代码语言:javascript
复制
bytespersec = bitspersample * channels * samplespersec / 8
alignment = bitspersample * channels / 8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15739164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档