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 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
Python初学者常见错误详解
Jul 02 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
关于python爬虫应用urllib库作用分析
Sep 04 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中检查文件或目录是否存在的代码小结
2012/10/22 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
浅析Python中的for 循环
2016/06/09 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
python文件编写好后如何实践
2020/07/07 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
编辑硕士自荐信范文
2013/11/27 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
工程承包协议书
2014/04/22 职场文书
数学教研活动总结
2014/07/02 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js