我很难将一个短缓冲区写入我的硬盘上的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);
}发布于 2020-12-06 06:00:09
文件名中的Tilde (~)通过shell扩展到主目录。对于库函数,文件路径必须是完全的,无论是绝对的还是相对的。
https://stackoverflow.com/questions/22530515
复制相似问题