python服务器传输wav文件,Python处理wav文件(二进制文件读写)

wav文件信息格式图

6c1555302777729326ca3efa0910d9ec.png

前44字节为头信息,后面的为音频数据。

import struct

import array

# 读取wav文件,二进制要记得用b

file = open('Love Story.wav', 'rb')

# 获取前44个字节,文件信息。

info = file.read(44)

# 获取文件大小, 将指针移动到文件末尾

file_size = file.seek(0, 2)

# 计算数组大小

n = (file_size - 44) // 2

# 生成buf

buf = array.array('h', (0 for _ in range(n)))

# 将文件指针定位到44

file.seek(44)

# 将数据读入到buf中

file.readinto(buf)

# 将声音变小

for i in range(n):

buf[i] //= 10

# 写入数据

f = open('demo.wav', 'wb')

f.write(info)

buf.tofile(f)

# 关闭文件

f.close()

file.close()

print('完成')

二进制数据可以用readinto,读入到提前分配好的buffer中,便于数据处理。

解析二进制数据可以使用标准库中的struct模块的unpack方法

比如:查看声道数

struct.unpack('h', file[22:24])

查看采样频率

struct.unpack('i', file[24:28])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值