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中使用Beautiful Soup库的超详细教程
Apr 30 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
python实用代码片段收集贴
Jun 03 Python
python制作一个桌面便签软件
Aug 09 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
python生成ppt的方法
Jun 07 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
pyspark 随机森林的实现
Apr 24 Python
python如何爬取网页中的文字
Jul 28 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 SQL之where语句生成器
2009/03/24 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
小谈php正则提取图片地址
2014/03/27 PHP
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
python直接访问私有属性的简单方法
2016/07/25 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python 二维数组90度旋转的方法
2019/01/28 Python
Python控制台实现交互式环境执行
2020/06/09 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
英国综合网上购物商城:The Hut
2018/07/03 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
大学生演讲稿范文
2014/01/11 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
保护环境建议书
2014/03/12 职场文书
连带责任保证书
2014/04/29 职场文书
数学系毕业生求职信
2014/05/29 职场文书
班级读书活动总结
2014/06/30 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
道歉的话怎么说
2015/05/12 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL