正如所提到的yzt
,你需要提前知道你的.wav
以及按什么顺序。据我所知,您将拥有标签、标头和值(样本)以及压缩信息。那么,首先:
例如,如果您知道要做的第一件事是读取压缩率,那么您将通过提取可能的文件来开始读取过程double
:
ifstream myfile("beep.wav", ios::in|ios::binary);
double compression_rate;
myfile.read((char*)&compression_rate, sizeof(compression_rate));
// As well as probably the sample rate...
double sample_rate;
myfile.read((char*)&sample_rate, sizeof(sample_rate));
那么,样本数量可能是:
int nb_samples;
myfile.read((char*)&nb_samples, sizeof(nb_samples));
然后,这些样本的值...(此处存储为vector
of double
)
vector<double> vect;
vect.resize(nb_samples);
myfile.read((char*)&vect[0], nb_samples * sizeof(double));
Etc...
但话又说回来,什么是.wav
你打开的是用什么做的?
一旦你完全掌握了内容,你就可以反其道而行之,开始编写你自己的内容.wav
从头开始...
入门 http://www.eecs.umich.edu/eecs/courses/eecs380/HANDOUTS/cppBinaryFileIO-2.html - and here http://courses.cs.vt.edu/cs2604/fall02/binio.html.
字节 - PCM Wav 文件的“尸检” https://ccrma.stanford.edu/courses/422/projects/WaveFormat/.