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使用urllib2模块获取gravatar头像实例
Dec 18 Python
Python实现从百度API获取天气的方法
Mar 11 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
python中metaclass原理与用法详解
Jun 25 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
python字典的元素访问实例详解
Jul 21 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 Google的translate API代码
2008/12/10 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
php生成zip文件类实例
2015/04/07 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
jquery增加和删除元素的方法
2015/01/14 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
webstorm中vue语法的支持详解
2018/05/09 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
js实现随机抽奖
2020/03/19 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
基于Python pip用国内镜像下载的方法
2018/06/12 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python 中如何获取列表的索引
2019/07/02 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
自荐书封面下载
2013/11/29 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
机械机修工岗位职责
2014/08/03 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
给下属加薪申请报告
2015/05/15 职场文书
工作后的感想
2015/08/07 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android