在C++中讀取音頻文件數據通常使用專門的音頻處理庫,比如libsndfile、libsndfile或者ffmpeg等。以下是一個使用libsndfile庫來讀取音頻文件數據的示例代碼:
#include <iostream>
#include <sndfile.h>
int main() {
// 打開音頻文件
SNDFILE* sndfile = sf_open("audio.wav", SFM_READ, NULL);
if (!sndfile) {
std::cerr << "Error opening file" << std::endl;
return 1;
}
// 獲取音頻文件信息
SF_INFO info;
sf_command(sndfile, SFC_GET_CURRENT_SF_INFO, &info, sizeof(info));
// 讀取音頻數據
const int num_samples = info.frames * info.channels;
float* data = new float[num_samples];
sf_read_float(sndfile, data, num_samples);
// 輸出音頻數據
for (int i = 0; i < num_samples; i++) {
std::cout << data[i] << " ";
}
// 釋放資源
delete[] data;
sf_close(sndfile);
return 0;
}
在這個示例中,我們使用libsndfile庫來打開一個音頻文件(“audio.wav”),讀取音頻數據,并輸出到控制臺。請確保將libsndfile庫正確鏈接到您的項目中,并根據您的實際情況修改文件路徑和音頻數據處理邏輯。