C++怎么读取WAV音频文件的头部数据
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"C++怎么读取WAV音频文件的头部数据",在日常操作中,相信很多人在C++怎么读取WAV音频文件的头部数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2026年11月03日C++怎么读取WAV音频文件的头部数据
这篇文章主要介绍"C++怎么读取WAV音频文件的头部数据",在日常操作中,相信很多人在C++怎么读取WAV音频文件的头部数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++怎么读取WAV音频文件的头部数据"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
C++读取WAV音频文件的头部数据的实现方法
实现代码:
#include#include #include 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音频文件的头部数据"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
头部
数据
文件
音频
C++
学习
方法
更多
帮助
实用
接下来
代码
文章
理论
知识
篇文章
网站
资料
跟着
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技网
互联网电商科技
互联网核心科技是什么
互联网科技英文
百单互联网科技有限公司
伴你行互联网科技有限公司
互联网科技咨询
深圳卡尔迅互联网科技有限公司怎么样
深圳互联网科技怎么样
富国互联网科技创新基金
赶超互联网科技 微信多开
互联网科技革命什么开始
区块链结合互联网科技
上海科技产业互联网平台
小米互联网科技园入驻
厦门江牛科技互联网
湖北辰鑫科技互联网
互联网科技职业技能培训学校
互联网科技的前景
互联网高科技绘画
互联网黑科技
互联网科技公司怎么样
唐信互联网科技
伴你行互联网科技有限公司
互联网科技股有哪些
苏州五指互联网络科技有限
互联网数据科技专业
科技互联网的核心竞争力
皮皮虾互联网科技有限公司
互联网领先科技活动