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获取脚本所在目录的正确方法
Apr 15 Python
Python魔术方法详解
Feb 14 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
python交换两个变量的值方法
Jan 12 Python
python时间序列按频率生成日期的方法
May 14 Python
python提取xml里面的链接源码详解
Oct 15 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
详解KMP算法以及python如何实现
Sep 18 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
python二分查找算法的递归实现方法
2016/05/12 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
python操作链表的示例代码
2020/09/27 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
机关门卫制度
2014/02/01 职场文书
上班看电影检讨书
2014/02/12 职场文书
绩效工资实施方案
2014/03/15 职场文书
一分钟演讲稿
2014/04/30 职场文书
雷人标语集锦
2014/06/19 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers