wav音频格式是微软的制定的一种文件格式,其结构非常简单音频存储格式。为了为接下来学习DSP做准备,我今天查了一些关于读取wav文件的资料,现将其总结与此,并编程实现(代码部分参考了网络上一些代码,修改了其中一些错误之处)。下图是我绘制的wav文件格式结构图:


代码如下:struct ret_value
{char *data;unsigned long size;ret_value(){data = 0;size = 0;}
};void load_wave_file(char *fname, struct ret_value *ret)
{FILE *fp;fp = fopen(fname,"rb");if (fp){char id[5];         // 5个字节存储空间存储'RIFF'和'\0',这个是为方便利用strcmpunsigned long size;  // 存储文件大小short format_tag, channels, block_align, bits_per_sample;    // 16位数据unsigned long format_length, sample_rate, avg_bytes_sec, data_size; // 32位数据fread(id, sizeof(char), 4, fp); // 读取'RIFF'id[4] = '\0';if (!strcmp(id, "RIFF")){ fread(&size, sizeof(unsigned long), 1, fp); // 读取文件大小fread(id, sizeof(char), 4, fp);        // 读取'WAVE'id[4] = '\0';if (!strcmp(id,"WAVE")){ fread(id, sizeof(char), 4, fp);     // 读取4字节 "fmt ";fread(&format_length, sizeof(unsigned long),1,fp);fread(&format_tag, sizeof(short), 1, fp); // 读取文件tagfread(&channels, sizeof(short),1,fp);    // 读取通道数目fread(&sample_rate, sizeof(unsigned long), 1, fp);   // 读取采样率大小fread(&avg_bytes_sec, sizeof(unsigned long), 1, fp); // 读取每秒数据量fread(&block_align, sizeof(short), 1, fp);     // 读取块对齐fread(&bits_per_sample, sizeof(short), 1, fp);      // 读取每一样本大小fread(id, sizeof(char), 4, fp);                     // 读入'data'fread(&data_size, sizeof(unsigned long), 1, fp);    // 读取数据大小ret->size = data_size;ret->data = (char *) malloc(sizeof(char)*data_size); // 申请内存空间fread(ret->data, sizeof(char), data_size, fp);      // 读取数据}else{printf("Error: RIFF file but not a wave file\n");}}else{printf("Error: not a RIFF file\n");}}
}

南无阿弥陀佛

c++读取wav音频方法相关推荐

  1. 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法

    C++读取WAV音频文件的头部数据的实现方法 前言: 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有 ...

  2. python 读取wav 音频文件的两种方式

    python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...

  3. python音频频谱_Python 读取WAV音频文件 画频谱的实例

    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...

  4. python音频频谱_Python读取WAV音频文件 画频谱的方法

    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...

  5. c语言 文件 long double 读取,读取*.wav音频文件

    1.wav音频文件的格式 wav文件由文件头和采样数据2部分组成. 文件头又分为RIFF(Resource Interchange File Format).WAVE文件标识段 和 声音数据格式说明段 ...

  6. 读取*.wav音频文件

    1.wav音频文件的格式 wav文件由文件头和采样数据2部分组成. 文件头又分为RIFF(Resource Interchange File Format).WAVE文件标识段 和 声音数据格式说明段 ...

  7. Python 读取WAV音频文件 画频谱

    import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav f ...

  8. Python读取wav音频文件

    第一种方式:蜂鸣声 import winsound # 系统音效 winsound.Beep(300,500)# 响铃:300频率,500持续时间 第二种方式:音乐(wav格式或mp3格式) 安装pl ...

  9. python读取音频文件_python 读取wav 音频文件的两种方式

    JavaScript算法(冒泡排序.选择排序与插入排序) 冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看介绍的冒泡排序,选择排 ...

最新文章

  1. python with 打开多个文件
  2. 深入理解 Spring 之源码剖析IOC
  3. 当我们说“分类”的时候,我们到底在说什么?
  4. 逆向工程核心原理读书笔记-API钩取之计算器显示中文数字
  5. CDS view里inner join, left outer join和association的区别
  6. (HDU)1058 --Humble Numbers( 丑数)
  7. 【qduoj - 纳新题】凑数题(恰好装满类0-1背包 或 母函数)
  8. python 代码片段9
  9. Bootstrap禁用某个按钮组
  10. 许昌往事之压力无处不在
  11. 网站长尾关键词优化指南
  12. 亚马逊网上书店、巴诺书店最佳畅销书《最后期限》
  13. MongoDB——explain执行计划详解
  14. java 生成ppt_Java 创建并应用幻灯片母版
  15. 共享编辑文档系统dzzoffice安装
  16. js[中英文排序-获取中文拼音]
  17. 钢铁集团的混合云灾备
  18. 拼多多api(json格式爬虫采集)
  19. 深度学习之多层感知器及激活函数
  20. iatf16949标准三大过程_IATF16949标准过程绩效指标建立需注意的事项

热门文章

  1. 软件测评公司怎么选?口碑好的测评公司推荐
  2. 用计算机来解锁密码,电脑忘记开机密码怎么办?如何解锁?
  3. 硕士毕业论文外审要求
  4. 云计算之概念——IaaS、SaaS、PaaS、Daas
  5. SaaS、PaaS、IaaS、DaaS、BaaS 都是什么
  6. 软件设计师(计算机系统)
  7. UIResponder事件处理 _Lenny Kwok
  8. 二叉树——中序遍历(递归/非递归)
  9. 网络上各家分享CAD图纸如何分辨好坏呢?
  10. C语言计算机二级(考点)