【问题标题】:program that records audio: mute microphone录制音频的程序:静音麦克风
【发布时间】:2015-05-08 08:57:04
【问题描述】:

我最近开始编写一个 C# 程序,该程序通过连接到 PC 的麦克风(即笔记本电脑麦克风、台式耳机等...)进行简单的音频录制。

所以现在,我已经完成了录音、暂停、停止、保存和重放等所有工作,但我似乎无法编写最后一个功能:将麦克风静音。这意味着程序继续录制音频,但录制的数据是静音的,因为麦克风已静音并且没有来自麦克风的输入。

我进行了一些搜索,发现实际上是禁用硬件本身以使其静音,而不是仅仅切断麦克风硬件的输入。

这里有人可以告诉我如何在 C# 中停止接收来自麦克风的输入吗?然后,在选择时恢复接收输入?

编辑:我还应该说我使用 winmm.dll 作为 dll 导入,如下所示:

[DllImport("winmm.dll",EntryPoint="mciSendStringA", ExactSpelling=true,
            CharSet=CharSet.Ansi, SetLastError=true)]
private static extern int record(string lpstrCommand, string lpstrReturnString,
                                 int uReturnLength, int hwndCallback);`

【问题讨论】:

  • Mute microphone on Windows 7 的可能重复项
  • 我不明白解决方案,它有一个源代码和一个要导入的 .dll 库(?)。我该如何实施呢?解决方案是 .dll 库吗?还是我也必须参考源代码? (C#程序中还没有静音功能,就这样吧)

标签: c# visual-studio audio microphone


【解决方案1】:

如果您想“恢复到接收输入”,可能使用相同的电平设置,最好不要触摸麦克风电平和静音设置,而只需将输入样本设置为零以实现“静音” " 时间间隔。

否则你应该与Mixer as shown here互动

【讨论】:

  • 啊,那我该如何将传入的样本设置为零?
  • 感谢您编辑问题!对不起,一团糟!
  • 如果您的代码记录了音频,那么在将其保存到磁盘之前,您将拥有一系列短裤。只需将所有这些短裤设置为零。
  • 我不明白这一系列的短裤。我知道短裤就像一种数据类型? (Int,String,double?)但为了更好地澄清事情,我应该声明我正在通过 DllImport 使用 winmm.dll 文件,如下所示:[DllImport("winmm.dll",EntryPoint="mciSendStringA", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]private static extern int record(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
  • 嗯,这个函数是一个高级函数,它做了几个步骤。使用一些较低级别的函数来访问读入的实际样本。
猜你喜欢
  • 2023-03-21
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
相关资源
最近更新 更多