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 29 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
python获取标准北京时间的方法
Mar 24 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python正则表达式re之compile函数解析
Oct 25 Python
python图书管理系统
Apr 05 Python
简单了解python关系(比较)运算符
Jul 08 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
Python使用python-docx读写word文档
Aug 26 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 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水印技术
2007/02/14 PHP
php 301转向实现代码
2008/09/18 PHP
优化PHP程序的方法小结
2012/02/23 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
Javascript MD4
2006/12/20 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
js读取配置文件自写
2014/02/11 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
Python 含参构造函数实例详解
2017/05/25 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Python descriptor(描述符)的实现
2020/11/15 Python
python遍历路径破解表单的示例
2020/11/21 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
上海某公司.net方向笔试题
2014/09/14 面试题
大学生求职推荐信
2013/11/27 职场文书
考察现实表现材料
2014/05/19 职场文书
学校读书活动总结
2014/06/30 职场文书
学籍证明模板
2014/11/21 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
锦旗赠语
2015/06/23 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
Python常遇到的错误和异常
2021/11/02 Python