首页 > 其他分享 >WAVE文件理解

WAVE文件理解

时间:2022-09-22 14:12:44浏览次数:79  
标签:文件 struct int WAVE header 理解 data pack

本文主要对wave文件做个说明

Wav 文件

WAV,即WAVE(Waveform Audio File Format, 波形音频文件格式),是微软资源交换文件格式(RIFF)规范的一个子集,用于存储数字音频文件。是一种无压缩格式文件

The WAVE file format, 由 文件头和文件本身构成. 一个 WAVE 文件是单独的 “WAVE” 块, 其有两部分组成:

  • a “fmt” chunk - 特殊的数据格式
  • a “data” chunk -包含实际数据

Wav 头文件

位置 描述
1 - 4 “RIFF” Marks the file as a riff file. Characters are each 1 byte long.
5 - 8 File size (integer) Size of the overall file - 8 bytes, in bytes (32-bit integer). Typically, you’d fill this in after creation
9 -12 “WAVE” File Type Header. For our purposes, it always equals “WAVE”.
13-16 “fmt " Format chunk marker. Includes trailing null
17-20 16 Length of format data as listed above
21-22 1 Type of format (1 is PCM) - 2 byte integer
23-24 2 Number of Channels - 2 byte integer
25-28 44100 Sample Rate - 32 byte integer. Common values are 44100 (CD), 48000 (DAT). Sample Rate = Number of Samples per second, or Hertz.
29-32 176400 (Sample Rate * BitsPerSample * Channels) / 8.
33-34 4 (BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 bit mono4 - 16 bit stereo
35-36 16 Bits per sample
37-40 “data” “data” chunk header. Marks the beginning of the data section.
41-44 File size (data) Size of the data section.

python 构建 Wav 头文件

点击查看代码
def create_wav_header(audio_size: int, sampleRate:int, bits:int, channel:int):
    header = b''
    header += b"RIFF"
    header += struct.pack('i', int(audio_size + 44 - 8))
    header += b"WAVEfmt "
    header += b'\x10\x00\x00\x00'
    header += b'\x01\x00'
    header += struct.pack('H', channel)
    header += struct.pack('i', sampleRate)
    header += struct.pack('i', int(sampleRate * bits / 8))
    header += struct.pack('H', int(channel * bits / 8))
    header += struct.pack('H', bits)
    header += b'data'
    header += struct.pack('i', audio_size)
    return header

*代码见 https://yuan1615.github.io/2022/09/02/WAV-File-Header/

标签:文件,struct,int,WAVE,header,理解,data,pack
From: https://www.cnblogs.com/wuzhitj/p/16719048.html

相关文章

  • LR中关联的理解
    一、什么时候需要关联1.关联的含义关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值......
  • 目录和文件管理
    1.目录层次1.1常见目录一级目录功能(作用)/bin/存放系统命令,普通用户和root都可以执行。放在/bin下的命令在单用户模式下也可以执行/boot/系统启动目录,保存......
  • Java 加载、编辑和保存WPS表格文件(.et/.ett)
    WPS表格文件是金山开发的专门用于处理表格数据的Office工具,属于WPSOffice中WPS文字、WPS表格和WPS演示三大功能模块之一。通常以.et和.ett作为文件后缀。我们在通过后端来......
  • java超大文件上传和断点续传的实现
    ​我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:p......
  • WSL 和 Windows 互相访问文件系统
    在Windows10中安装WSL可以安装Linux子系统进行尝试编译需要linux环境才能构建的工具,或者体验linux系统;如果你不确定当前是否有Linux子系统在运行,可以在WindowsPowe......
  • 找不到gpedit.msc文件怎么办?
    首先我们打开记事本,并输入以下内容(注意空格):@echooffpushd"%~dp0"dir/bC:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~......
  • JS中如何理解局部变量和全局变量
    JS中如何理解局部变量和全局变量?不使用var定义变量会有什么影响使用var定于变量,该变量作用于当前的局部环境,相对作用不使用var定义的变量,作用环境是全局环境......
  • 打包文件
         ......
  • 怎么做XP引导文件
    WindowsNT类的操作系统(也就是WindowsNT/2000/XP)中有一个特殊文件,也就是“BOOT.INI”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统。“BOOT.INI”文件会在......
  • extern的使用详解(多文件编程)——C语言
    extern——关键字extern是C语言中的一个关键字,一般用在变量名前或函数名前,作用是用来说明“此变量/函数是在别处定义的,要在此处引用”,extern这个关键字大部分读者应该是在......