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如何实现远程控制电脑(结合微信)
Dec 21 Python
python妙用之编码的转换详解
Apr 21 Python
Python lambda函数基本用法实例分析
Mar 16 Python
python2.7实现爬虫网页数据
May 25 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
Python 依赖库太多了该如何管理
Nov 08 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 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中require和require_once的区别说明
2014/02/27 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
Shell编程面试题
2016/05/29 面试题
服装销售人员求职自我评价
2013/09/26 职场文书
团日活动策划书
2014/02/01 职场文书
关于美容院的活动方案
2014/08/14 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
Tomcat用户管理的优化配置详解
2022/03/31 Servers
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis