c++读取wav音频方法
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音频方法相关推荐
- 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法
C++读取WAV音频文件的头部数据的实现方法 前言: 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有 ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...
- python音频频谱_Python 读取WAV音频文件 画频谱的实例
Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...
- python音频频谱_Python读取WAV音频文件 画频谱的方法
Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...
- c语言 文件 long double 读取,读取*.wav音频文件
1.wav音频文件的格式 wav文件由文件头和采样数据2部分组成. 文件头又分为RIFF(Resource Interchange File Format).WAVE文件标识段 和 声音数据格式说明段 ...
- 读取*.wav音频文件
1.wav音频文件的格式 wav文件由文件头和采样数据2部分组成. 文件头又分为RIFF(Resource Interchange File Format).WAVE文件标识段 和 声音数据格式说明段 ...
- Python 读取WAV音频文件 画频谱
import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav f ...
- Python读取wav音频文件
第一种方式:蜂鸣声 import winsound # 系统音效 winsound.Beep(300,500)# 响铃:300频率,500持续时间 第二种方式:音乐(wav格式或mp3格式) 安装pl ...
- python读取音频文件_python 读取wav 音频文件的两种方式
JavaScript算法(冒泡排序.选择排序与插入排序) 冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看介绍的冒泡排序,选择排 ...
最新文章
- python with 打开多个文件
- 深入理解 Spring 之源码剖析IOC
- 当我们说“分类”的时候,我们到底在说什么?
- 逆向工程核心原理读书笔记-API钩取之计算器显示中文数字
- CDS view里inner join, left outer join和association的区别
- (HDU)1058 --Humble Numbers( 丑数)
- 【qduoj - 纳新题】凑数题(恰好装满类0-1背包 或 母函数)
- python 代码片段9
- Bootstrap禁用某个按钮组
- 许昌往事之压力无处不在
- 网站长尾关键词优化指南
- 亚马逊网上书店、巴诺书店最佳畅销书《最后期限》
- MongoDB——explain执行计划详解
- java 生成ppt_Java 创建并应用幻灯片母版
- 共享编辑文档系统dzzoffice安装
- js[中英文排序-获取中文拼音]
- 钢铁集团的混合云灾备
- 拼多多api(json格式爬虫采集)
- 深度学习之多层感知器及激活函数
- iatf16949标准三大过程_IATF16949标准过程绩效指标建立需注意的事项