python pcm音频添加头转成Wav格式文件的方法


Posted in Python onJanuary 09, 2019

如下所示:

''''' 
add Head Infomation for pcm file 
'''
import sys 
import struct 
import os 
__author__ = 'bob_hu, hewitt924@gmail.com'
__date__ = 'Dec 19,2011'
__update__ = 'Dec 19,2011'
def geneHeadInfo(sampleRate,bits,sampleNum): 
  ''''' 
  生成头信息,需要采样率,每个采样的位数,和整个wav的采样的字节数 
  '''
  rHeadInfo = '\x52\x49\x46\x46'
  fileLength = struct.pack('i',sampleNum + 36) 
  rHeadInfo += fileLength 
  rHeadInfo += '\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x01\x00'
  rHeadInfo += struct.pack('i',sampleRate) 
  rHeadInfo += struct.pack('i',sampleRate * bits / 8) 
  rHeadInfo += '\x02\x00'
  rHeadInfo += struct.pack('H',bits) 
  rHeadInfo += '\x64\x61\x74\x61'
  rHeadInfo += struct.pack('i',sampleNum) 
  return rHeadInfo 
if __name__ == '__main__': 
  if len(sys.argv) != 5: 
  print "usage: python %s inFile sampleRate bits outFile" % sys.argv[0] 
  sys.exit(1) 
  fout = open(sys.argv[4],'wb') #用二进制的写入模式 
  #fout.write(struct.pack('4s','\x66\x6D\x74\x20'))
  #写入一个长度为4的串,这个串的二进制内容为 66 6D 74 20 
  #Riff_flag,afd,fad,afdd, = struct.unpack('4c',fin.read(4))
  #读入四个字节,每一个都解析成一个字母 
  #open(sys.argv[4],'wb').write(struct.pack('4s','fmt '))
  #将字符串解析成二进制后再写入 
  #open(sys.argv[4],'wb').write('\x3C\x9C\x00\x00\x57')
  #直接写入二进制内容:3C 9C 00 00 57 
  #fout.write(struct.pack('i',6000)) #写入6000的二进制形式 
  #check whether inFile has head-Info 
  fin = open(sys.argv[1],'rb') 
  Riff_flag, = struct.unpack('4s',fin.read(4)) 
  if Riff_flag == 'RIFF': 
  print "%s 有头信息" % sys.argv[1] 
  fin.close() 
  sys.exit(0) 
  else: 
  print "%s 没有头信息" % sys.argv[1] 
  fin.close() 
  #采样率 
  sampleRate = int(sys.argv[2]) 
  #bit位 
  bits = int(sys.argv[3]) 
  fin = open(sys.argv[1],'rb') 
  startPos = fin.tell() 
  fin.seek(0,os.SEEK_END) 
  endPos = fin.tell() 
  sampleNum = (endPos - startPos) 
  print sampleNum 
  headInfo = geneHeadInfo(sampleRate,bits,sampleNum) 
  fout.write(headInfo) 
  fin.seek(os.SEEK_SET) 
  fout.write(fin.read()) 
  fin.close() 
  fout.close()

以上这篇python pcm音频添加头转成Wav格式文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
python实现简易版计算器
Jun 22 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
Python中的Django基本命令实例详解
Jul 15 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
wxPython实现分隔窗口
Nov 19 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
Python接口测试环境搭建过程详解
Jun 29 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
python基于C/S模式实现聊天室功能
Jan 09 #Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 #Python
Python 利用pydub库操作音频文件的方法
Jan 09 #Python
Python简单过滤字母和数字的方法小结
Jan 09 #Python
使用python批量化音乐文件格式转换的实例
Jan 09 #Python
python+ffmpeg批量去视频开头的方法
Jan 09 #Python
Python实现简易过滤删除数字的方法小结
Jan 09 #Python
You might like
PHP安装问题
2006/10/09 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
DOM精简教程
2006/10/03 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python实现数据写入excel表格
2018/03/25 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python中字符串的编码与解码详析
2020/12/03 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
学生党员思想汇报范文
2014/01/09 职场文书
动员大会主持词
2014/03/20 职场文书
物理学专业自荐信
2014/06/11 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技