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算法应用实战之栈详解
Feb 04 Python
python的多重继承的理解
Aug 06 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
python计算无向图节点度的实例代码
Nov 22 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
基于python+selenium的二次封装的实现
Jan 06 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
python实现经典排序算法的示例代码
Feb 07 Python
超详细Python解释器新手安装教程
May 10 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
页面中js执行顺序
2009/11/09 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
原生javascript移动端滑动banner效果
2017/03/10 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
vuex存储token示例
2019/11/11 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
python给list排序的简单方法
2020/12/10 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
食品销售计划书
2014/04/26 职场文书
大学生党性分析材料
2014/12/19 职场文书
会计入职心得体会
2016/01/22 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
python获取对象信息的实例详解
2021/07/07 Python
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL