Linux音频驱动-WAV文件格式分析
概述
RIFF Chunk
struct RIFF_CHUNK
{char ChunkID[4]; //'R','I','F','F'unsigned int ChunkSize;char Format[4]; //'W','A','V','E'
};
其中ChunkSize代表的是整个wav_file的大小减去ChunkID和ChunkSize的大小,即wav_file_size=ChunkSize+8。
Format Chunk
struct FORMAT_CHUNK
{char FmtID[4]; //'f','m','t'unsigned int FmtSize;unsigned short FmtTag;unsigned short FmtChannels;unsigned int SampleRate;unsigned int ByteRate;unsigned short BlockAilgn;unsigned short BitsPerSample;
};
.FmtSize: 通常取值为16或者18,16代表是该音频使用PCM编码方式。
Data Chunk
struct DATA_CHUNK
{char DataID[4]; //'d','a','t','a'unsigned int DataSize;
};
DataSize就是整个raw data的大小。
实例分析
root@test:~$ mediainfo ~/Download/test.wav
General
Complete name : /home/test/Download/test.wav
Format : Wave
File size : 44.2 MiB
Duration : 4mn 22s
Overall bit rate mode : Constant
Overall bit rate : 1 411 KbpsAudio
ID : 0
Format : PCM
Format settings, Endianness : Little
Codec ID : 1
Duration : 4mn 22s
Bit rate mode : Constant
Bit rate : 1 411.2 Kbps
Channel(s) : 2 channels
Sampling rate : 44.1 KHz
Bit depth : 16 bits
Stream size : 44.2 MiB (100%)
2. 使用vim使用十六进制打开该文件
1 0000000: 5249 4646 741d c302 5741 5645 666d 7420 RIFFt...WAVEfmt 2 0000010: 1000 0000 0100 0200 44ac 0000 10b1 0200 ........D.......3 0000020: 0400 1000 6461 7461 501d c302 0100 0000 ....dataP.......4 0000030: ffff 0000 0000 0000 0000 0100 0000 ffff ................5 0000040: 0000 0100 0000 ffff 0000 0000 ffff 0100 ................6 0000050: 0200 ffff fdff 0100 0300 ffff ffff 0200 ................7 0000060: 0000 feff 0100 0200 ffff feff 0100 0200 ................8 0000070: ffff ffff 0100 0000 ffff 0100 0000 ffff ................
3. 分析上述的数据
"66 6d 74 20" 对应的Ascii码字符为"fmt"。
Linux音频驱动-WAV文件格式分析相关推荐
- linux 音频文件格式,Linux音频驱动-WAV文件格式分析
实例分析 1. 在网上下载wav的音频文件,使用mediainfo显示该音频文件的详细信息. root@test:~$ mediainfo ~/Download/test.wav General C ...
- wav文件格式分析与详解
wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...
- Linux 音频驱动(四) ASoC音频驱动之Machine驱动
目录 1. 基本介绍 2. 源码分析 2.1. Machine数据结构 struct snd_soc_dai_link 3. 声卡 3.1. 数据结构struct snd_soc_card 3.2. ...
- Linux 音频驱动(五) ALSA音频驱动之PCM逻辑设备
目录 1. 前言 2. PCM逻辑设备 2.1. 创建 PCM逻辑设备: 2.2. PCM逻辑设备文件操作函数集:snd_pcm_f_ops[] 2.3. Open PCM逻辑设备 2.4. Writ ...
- STM32MP157驱动开发——Linux 音频驱动
STM32MP157驱动开发--Linux 音频驱动 一.简介 1.CS42L51 简介 2.I2S总线 3.STM32MP1 SAI 总线接口 二.驱动开发 1.音频驱动 1)修改设备树 i2c 接 ...
- Linux音频驱动之二:Control接口的调用
本文是基于mini2440开发板Linux版本号是linux-2.6.32.2的学习笔记 一. control接口说明 Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频 ...
- [数据压缩]WAV文件格式分析及AVI数据结构分析
目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...
- Linux 音频驱动(二) ASoC音频驱动之Platform驱动
目录 1. 简介 2. 源码分析 2.1. CPU DAI 2.1.1. 数据结构struct snd_soc_dai_driver 2.1.2. 注册CPU DAI:snd_soc_register ...
- WAV文件格式分析(附AVI文件格式分析)
目录 一.WAV格式简介 二.WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三.AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or ...
- 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析
目录 AVI文件问题回答 1.AVI文件音频和视频的数据是如何放置的,交织放置还是连续放置? 2.AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? WAV文件格式分析 文件概述 ...
最新文章
- C语言字符char和整型int的关系
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
- webpack4.0让编译速度飙升
- Delphi的对象注销方法Destroy和free的区别
- 文本文件与二进制文件,C++流(待续)
- Win10系统下安装VC6.0教程
- 查理和政策配对工厂——设计一个问卷运算系统的B端到C端
- mariadb的explain分析及InnoDB存储引擎
- Ubuntu 16.04 下 Vim安装
- 信息学奥赛一本通(1138:将字符串中的小写字母转换成大写字母)
- python圆柱体_python绘制圆柱体的方法
- 函数adapthisteq
- pythondjangoddos_django带服务器
- jetbot 无法通过浏览器访问_linux中启动tomcat后浏览器无法访问的解决方法
- Rplidar A1利用Qt图形库进行周围环境的轮廓抓取
- tensorflow-ckpt2npy
- 解决RecyclerView内子条目可滑动导致的滑动冲突
- Mosquitto设置用户名密码
- android之基于百度语音合讯飞语音识别的语音交互
- Couldnt communicate with helper application Git提交
热门文章
- Spring+Quartz 整合二:调度管理与定时任务分离
- IFTT-意大利金融交易税
- 未捕获异常string was not recognized_给你代码:PHP7中的异常与错误处理
- 电脑锁屏按什么键解锁_锁屏键除了锁屏还能干什么?这 6 个 App 带你玩转手机实体键...
- 安装TensorFlow-gpu
- .NET(WinCE、WM)开发转Android开发 ——Xamarin和Smobiler对比...
- 基于etcd+confd通过nginx对docker服务混合注册发现详解
- 关于远程访问tomcat问题的总结
- oracle表空间使用率统计查询
- Java通过反射获取类的私有属性和方法