我无法将短缓冲区写入 HD 上的 wav 文件。我遵循了一些教程,但它们都提供了不同的方法。无论如何,这是我实现它的方式,但由于某种原因它不起作用。当我尝试打印 的结果时outfile
,我得到一个0
,并且没有任何内容写入磁盘。另外,我尝试了不同的路径,有时有文件名,有时没有文件名。
更新:当我将路径更改为仅文件名(例如hello.wav
而不是~/Documents/hello.wav
)时,打印出outfile
返回的内存位置,例如0x2194000
.
void gilbertAnalysis::writeWAV(float * buffer, int bufferSize){
SF_INFO sfinfo ;
sfinfo.channels = 1;
sfinfo.samplerate = 44100;
sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
const char* path = "~/Documents/hello.wav";
SNDFILE * outfile = sf_open(path, SFM_WRITE, &sfinfo);
sf_count_t count = sf_write_float(outfile, &buffer[0], bufferSize) ;
sf_write_sync(outfile);
sf_close(outfile);
}