gpt4 book ai didi

c# - 使用 Kinect 录制音频

转载 作者:行者123 更新时间:2023-11-30 17:07:53 26 4
gpt4 key购买 nike

我试图调整这个 Wav 录音示例: http://channel9.msdn.com/Series/KinectQuickstart/Audio-Fundamentals

对于新的 SDK(1.6 版),由于某种原因 - 生成的 .wav 文件无效

在初始化中:

        this.audioStream = this.sensor.AudioSource.Start();

// Use a separate thread for capturing audio because audio stream read operations
// will block, and we don't want to block main UI thread.
this.readingThread = new Thread(AudioReadingThread);
this.readingThread.Start();
fileStream = new FileStream(@"d:\temp\temp.wav", FileMode.Create);

int rec_time = (int) 20 * 2 * 16000;//20 sec
WriteWavHeader(fileStream, rec_time);

线程:

    private void AudioReadingThread()
{

while (this.reading)
{
int readCount = audioStream.Read(audioBuffer, 0, audioBuffer.Length);

fileStream.Write(audioBuffer, 0, readCount);
}
}

Wav header :

    static void WriteWavHeader(Stream stream, int dataLength)
{
//We need to use a memory stream because the BinaryWriter will close the underlying stream when it is closed
using (var memStream = new MemoryStream(64))
{
int cbFormat = 18; //sizeof(WAVEFORMATEX)
WAVEFORMATEX format = new WAVEFORMATEX()
{
wFormatTag = 1,
nChannels = 1,
nSamplesPerSec = 16000,
nAvgBytesPerSec = 32000,
nBlockAlign = 2,
wBitsPerSample = 16,
cbSize = 0
};

using (var bw = new BinaryWriter(memStream))
{
bw.Write(dataLength + cbFormat + 4); //File size - 8
bw.Write(cbFormat);

//WAVEFORMATEX
bw.Write(format.wFormatTag);
bw.Write(format.nChannels);
bw.Write(format.nSamplesPerSec);
bw.Write(format.nAvgBytesPerSec);
bw.Write(format.nBlockAlign);
bw.Write(format.wBitsPerSample);
bw.Write(format.cbSize);

//data header
bw.Write(dataLength);
memStream.WriteTo(stream);
}
}
}

最佳答案

您忘记添加代码以将“RIFF header ”添加到文件中。代码很简单:

//RIFF header
WriteString(memStream, "RIFF");
bw.Write(dataLength + cbFormat + 4); //File size - 8
WriteString(memStream, "WAVE");
WriteString(memStream, "fmt ");
bw.Write(cbFormat);

你也忘了修改“数据头”处的memStream,你需要这行:

WriteString(memStream, "data");

关于c# - 使用 Kinect 录制音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204902/

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