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迭代器和生成器介绍
Mar 06 Python
Python的Django框架中的Context使用
Jul 15 Python
全面理解Python中self的用法
Jun 04 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
Python实现CAN报文转换工具教程
May 05 Python
python代码能做成软件吗
Jul 24 Python
用python实现一个简单的验证码
Dec 09 Python
Python 如何实现文件自动去重
Jun 02 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
javascript 写类方式之五
2009/07/05 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python中的Django基本命令实例详解
2018/07/15 Python
django用户登录和注销的实现方法
2018/07/16 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python批量创建指定名称的文件夹
2019/03/21 Python
python与字符编码问题
2019/05/24 Python
python自动生成model文件过程详解
2019/11/02 Python
Python类继承和多态原理解析
2020/02/05 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
MySQL面试题目集锦
2016/04/14 面试题
2014年学习部工作总结
2014/11/12 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书