gpt4 book ai didi

c# - 使用 Directx DirectSound 从麦克风捕获声音

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:09 26 4
gpt4 key购买 nike

我正在创建一个简单的应用程序,用于记录来自麦克风的输入并将其存储到字节数组中。所以我对此进行了很多搜索,最终使用了 Directx DirectSound。这是我正在使用的代码:

using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;

private Thread CaptureSoundThread = null;
public CaptureBuffer applicationBuffer = null;
private SecondaryBuffer soundBuffer = null;
private Device soundDevice = null;

private void Form1_Load(object sender, EventArgs e)
{
soundDevice = new Device();
soundDevice.SetCooperativeLevel(this, CooperativeLevel.Normal);

// Set up our wave format to 44,100Hz, with 16 bit resolution
WaveFormat wf = new WaveFormat();
wf.FormatTag = WaveFormatTag.Pcm;
wf.SamplesPerSecond = 44100;
wf.BitsPerSample = 16;
wf.Channels = 1;
wf.BlockAlign = (short)(wf.Channels * wf.BitsPerSample / 8);
wf.AverageBytesPerSecond = wf.SamplesPerSecond * wf.BlockAlign;

int samplesPerUpdate = 512;

// Create a buffer with 2 seconds of sample data
BufferDescription bufferDesc = new BufferDescription(wf);
bufferDesc.BufferBytes = samplesPerUpdate * wf.BlockAlign * 2;
bufferDesc.ControlPositionNotify = true;
bufferDesc.GlobalFocus = true;

soundBuffer = new SecondaryBuffer(bufferDesc, soundDevice);
}

private void button1_Click(object sender, EventArgs e)
{
CaptureSoundThread = new Thread(new ThreadStart(WaitThread));
CaptureSoundThread.Start();
}

private void WaitThread()
{
while (true)
{
byte[] CaptureData = null;
CaptureData = (byte[])applicationBuffer.Read(0,
typeof(byte), LockFlag.None);
soundBuffer.Write(0, CaptureData, LockFlag.None);
// Start it playing
soundBuffer.Play(0, BufferPlayFlags.Looping);
}
}

但是当我尝试运行该应用程序时,出现了这个烦人的错误:

BadImageFormatException

Could not load file or assembly 'Microsoft.DirectX.DirectSound.dll' or one
of its dependencies. is not a valid Win32 application. (Exception from
HRESULT: 0x800700C1)

实际上,我不得不从 Internet 下载 Microsoft.DirectX.DirectSound.dll,因为我在 Visual Studio 程序集中找不到它们。

编辑:我刚刚通过阅读这篇文章解决了这个问题:http://www.codeproject.com/Articles/383138/BadImageFormatException-x86-i-x64

最佳答案

编辑:我刚刚通过阅读这篇文章解决了这个问题:http://www.codeproject.com/Articles/383138/BadImageFormatException-x86-i-x64

关于c# - 使用 Directx DirectSound 从麦克风捕获声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com