gpt4 book ai didi

c++ - 如何将原始音频数据写入使用Alsa Driver C++捕获的文件

转载 作者:行者123 更新时间:2023-12-03 01:14:00 30 4
gpt4 key购买 nike

我正在尝试使用Alsa驱动程序将原始音频数据写入特定文件。
代码下方:

ofstream binaryFile ("file.raw", ios::out | ios::binary);

if(inputData==NULL)
{
inputData = (uint8_t *)malloc(sizeOfDataInBytes);
}

while (audio_en)
{
snd_pcm_sframes_t numAudioFramesRead = snd_pcm_readi(ndi_AudioSupport.m_captureHandle,inputData,
ndi_AudioSupport.m_numAudioFramesPerVideoFrame);

if(numAudioFramesRead > 0)
{
binaryFile.write ((char*)inputData, sizeof (inputData));
}
}

binaryFile.close();

最佳答案

编写包括原始格式在内的许多不同音频格式的一种方法是使用sox音频库(libsox)。 gtkIOStream内置了C++ ALSA类和libsox类。
捕获到原始音频文件的示例来自ALSACapture.C source code here。基本概念是打开捕获设备和原始音频文件,然后循环捕获音频并使用Sox写入文件:

  Capture capture("default"); // open the default ALSA capture device
Sox<int> sox;
int ret=sox.openWrite("audio.raw", fs, capture.getChannels(), pow(2.,(double)snd_pcm_format_width(format)));
while (continue){
capture>>buffer;
sox.write(buffer);
}
使用libsox的好处是您不仅限于原始音频格式。

关于c++ - 如何将原始音频数据写入使用Alsa Driver C++捕获的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63049328/

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