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写入数据到MP3文件中的方法
Jul 10 Python
windows下python连接oracle数据库
Jun 07 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
浅谈python之新式类
Aug 12 Python
python使用插值法画出平滑曲线
Dec 15 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
python环境下安装opencv库的方法
Mar 05 Python
Django ValuesQuerySet转json方式
Mar 16 Python
基于python实现生成指定大小txt文档
Jul 20 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 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开发者的10个技巧
2011/02/25 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python使用Pycharm创建一个Django项目
2018/03/05 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python在不同条件下的输入与输出
2020/02/13 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
nohup的用法
2012/11/26 面试题
小学生三分钟演讲稿
2014/08/18 职场文书
公司演讲稿开场白
2014/08/25 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
初中教师个人总结
2015/02/10 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
暖春观后感
2015/06/08 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python