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深入学习之对象的属性
Aug 31 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Python函数中不定长参数的写法
Feb 13 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
如何教少儿学习Python编程
Jul 10 Python
Python命名空间及作用域原理实例解析
Aug 12 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
PHP URL路由类实例
2013/11/12 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
Python编写打字训练小程序
2019/09/26 Python
python操作yaml说明
2020/04/08 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
思想品德自我鉴定
2013/10/12 职场文书
商场活动策划方案
2014/01/24 职场文书
商业房地产广告语
2014/03/13 职场文书
学习十八大的心得体会
2014/09/12 职场文书
整改落实自查报告
2014/11/05 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
导游词之舟山普陀山
2019/11/06 职场文书