温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++怎么读取WAV音频文件的头部数据

发布时间:2022-04-13 16:27:38 来源:亿速云 阅读:521 作者:iii 栏目:编程语言

这篇文章主要介绍“C++怎么读取WAV音频文件的头部数据”,在日常操作中,相信很多人在C++怎么读取WAV音频文件的头部数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么读取WAV音频文件的头部数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C++读取WAV音频文件的头部数据的实现方法

实现代码:

#include <iostream> #include <string> #include <fstream>   using namespace std; using std::string; using std::fstream;   typedef struct WAV_HEADER{   char        RIFF[4];    // RIFF Header   Magic header   unsigned long    ChunkSize;   // RIFF Chunk Size    char        WAVE[4];    // WAVE Header      char        fmt[4];     // FMT header       unsigned long    Subchunk1Size; // Size of the fmt chunk                   unsigned short   AudioFormat;  // Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM    unsigned short   NumOfChan;   // Number of channels 1=Mono 2=Sterio             unsigned long    SamplesPerSec; // Sampling Frequency in Hz                  unsigned long    bytesPerSec;  // bytes per second    unsigned short   blockAlign;   // 2=16-bit mono, 4=16-bit stereo    unsigned short   bitsPerSample; // Number of bits per sample      char        Subchunk2ID[4]; // "data" string     unsigned long    Subchunk2Size; // Sampled data length     }wav_hdr;    // Function prototypes  int getFileSize(FILE *inFile);    int main(int argc,char *argv[]){   wav_hdr wavHeader;   FILE *wavFile;   int headerSize = sizeof(wav_hdr),filelength = 0;     string answer;     do{     string input;     string answer;       const char* filePath;       cout << "Pick wav file from the Windows Media File: ";     cin >> input;     cin.get();       cout << endl;       path = "C:\\Windows\\Media\\" + input + ".wav";     filePath = path.c_str();       wavFile = fopen( filePath , "r" );       if(wavFile == NULL){       printf("Can not able to open wave file\n");       //exit(EXIT_FAILURE);     }       fread(&wavHeader,headerSize,1,wavFile);     filelength = getFileSize(wavFile);     fclose(wavFile);       cout << "File is          :" << filelength << " bytes." << endl;       cout << "RIFF header        :" << wavHeader.RIFF[0]                          << wavHeader.RIFF[1]                          << wavHeader.RIFF[2]                          << wavHeader.RIFF[3] << endl;       cout << "WAVE header        :" << wavHeader.WAVE[0]                          << wavHeader.WAVE[1]                          << wavHeader.WAVE[2]                          << wavHeader.WAVE[3]                          << endl;       cout << "FMT            :" << wavHeader.fmt[0]                          << wavHeader.fmt[1]                          << wavHeader.fmt[2]                          << wavHeader.fmt[3]                          << endl;       cout << "Data size         :" << wavHeader.ChunkSize << endl;       // Display the sampling Rate form the header     cout << "Sampling Rate       :" << wavHeader.SamplesPerSec << endl;     cout << "Number of bits used    :" << wavHeader.bitsPerSample << endl;     cout << "Number of channels     :" << wavHeader.NumOfChan << endl;     cout << "Number of bytes per second :" << wavHeader.bytesPerSec << endl;     cout << "Data length        :" << wavHeader.Subchunk2Size << endl;     cout << "Audio Format        :" << wavHeader.AudioFormat << endl;     // Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM          cout << "Block align        :" << wavHeader.blockAlign << endl;       cout << "Data string        :" << wavHeader.Subchunk2ID[0]                          << wavHeader.Subchunk2ID[1]                         << wavHeader.Subchunk2ID[2]                          << wavHeader.Subchunk2ID[3]                          << endl;       cout << endl << endl << "Try something else? (y/n)";     cin >> answer;     //cin.get();     cout << endl << endl;     }while( answer == "y" );       getchar();   return 0; }  // find the file size  int getFileSize(FILE *inFile){   int fileSize = 0;   fseek(inFile,0,SEEK_END);     fileSize=ftell(inFile);     fseek(inFile,0,SEEK_SET);   return fileSize; }

到此,关于“C++怎么读取WAV音频文件的头部数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI