gpt4 book ai didi

c++ - WAVE 文件的恐惧失败

转载 作者:行者123 更新时间:2023-11-30 03:40:50 26 4
gpt4 key购买 nike

我正在使用这个 library读取波形文件的样本,特别是 this method :

unsigned int ReadDoublesNI(double** samples, unsigned int offs, unsigned int nsamples, int nchdest = 0)

我正在打开的 Grv Kick Acoustic 01.wav 文件可以下载 here .

使用这段代码似乎可以正确加载文件(文件属性正确,例如 m_bpsm_nchsize):

WaveReader mWaveReader = WaveReader("D:\\Google Drive\\Samples\\Grv Kick Acoustic 01.wav");
const unsigned int size = mWaveReader.GetSize();
vector<double> samplesContainer(size);
double* mono[1] = { samplesContainer.data() };
mWaveReader.ReadDoublesNI(mono, 0, size, 0);

但是一旦达到fread在 ReadDoublesNI 上,它跳到函数的末尾,结束 for 语句并立即返回。所以我无法从文件中读取任何样本。

我哪里错了?

最佳答案

您当前的代码作为 WaveReader 构造函数调用的一部分打开文件:

WaveReader mWaveReader = WaveReader("D:\\Google Drive\\Samples\\Grv Kick Acoustic 01.wav");

此构造函数调用Open,但不处理此调用失败的情况。

相反,调用默认构造函数,然后显式调用 Open,然后自己处理错误情况:

WaveReader mWaveReader = WaveReader();
if (!mWaveReader.Open("D:\\Google Drive\\Samples\\Grv Kick Acoustic 01.wav")) {
// something went wrong - handle this appropriately, and don't use the mWaveReader object
}

这至少可以处理文件未正确打开的情况。

关于c++ - WAVE 文件的恐惧失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805830/

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