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中的Null模式与桥接模式编程
Feb 02 Python
Swift中的协议(protocol)学习教程
Jul 08 Python
详解django中自定义标签和过滤器
Jul 03 Python
分享一个简单的python读写文件脚本
Nov 25 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
pandas值替换方法
Jul 10 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
selenium自动化测试入门实战
Dec 21 Python
python3 字符串str和bytes相互转换
Mar 23 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编程网上资源导航
2006/10/09 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
js实现select下拉框选择
2020/01/11 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
浅谈python日志的配置文件路径问题
2018/04/28 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
用Python解数独的方法示例
2019/10/24 Python
详解python 中in 的 用法
2019/12/12 Python
在pycharm中实现删除bookmark
2020/02/14 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
幼儿园母亲节活动方案
2014/03/10 职场文书
培训讲师岗位职责
2014/04/13 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
财产分割协议书范本
2014/11/03 职场文书