python pcm,python pcm音頻添加頭轉成Wav格式文件的方法

如下所示:

'''''

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格式文件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持聚米學院。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277390.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ajax 頁面無刷新

<!-- 使用原生Ajax 和 $.ajax 實現局部刷新的過程 --><!-- 封裝通用XMLHttpRequest對象 --><!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>創建XMLHttpRequest</title> <style&…

javascript字符串方法總結

javascript中常用的字符串方法 String 的靜態方法 fromCharCode&#xff1a;使用指定的Unicode值序列創建字符串 String.fromCharCode(num1, ..., numN) fromCodePoint: 使用指定的代碼點序列創建的字符串 String.fromCharCode(num1, ..., numN) **注意**: 以上兩個方法都是S…

php larval開發規范,數據模型 |《 Laravel 項目開發規范 5.5》| Laravel China 社區

本文檔最新版為 7.x&#xff0c;舊版本可能放棄維護&#xff0c;推薦閱讀最新版&#xff01;放置位置所有的數據模型文件&#xff0c;都 必須 存放在&#xff1a;app/Models/ 文件夾中。命名空間&#xff1a;namespace App\Models;User.phpLaravel 5.1 默認安裝會把 User 模型存…

課程總結

大一的我初次學習JAVA&#xff0c;盡管以前也有所了解過但是還是覺得有點難&#xff0c;這個和c語言相似但是又有很多的不同&#xff0c;比如關鍵字什么的&#xff0c;一個學期下來現在回望真的感覺學到的并不是很多&#xff0c;可能是我上課的時候喜歡分神吧&#xff0c;盡管在…

記錄工作中遇到的問題

只要在編程&#xff0c;遇到問題是肯定的&#xff0c;不過經常性遇到弱智的問題可就不太好了。把問題記錄下來&#xff0c;提醒自己 問題 主機解析異常&#xff0c;內部多個系統&#xff0c;系統的登錄需要從CAS中心得到登錄信息&#xff0c;如果失敗會提示登錄失敗。今天一直跳…

php7安裝詳解_,PHP7 redis擴展安裝詳解

1、安裝redis(1)下載&#xff1a;https://github.com/phpredis/phpredis/tree/php7 或下載http://pan.baidu.com/s/1i5DFrjn用samba掛載導進去(2)yum -y install m4 autoconf # 安裝依賴(3)unzip phpredis-php7.zip # 解壓(4)cd ./phpredis-php7 # 進入目錄(5)phpize #用php…

python之_init_函數的簡介

1、每個package中都必須包含一個_init_.py文件除了不需要加載模塊的 它方便在外部統一調用&#xff0c;和在內部互相調用&#xff0c;它可以為空&#xff0c;當為空時&#xff0c;作用是將這個文件夾下的內容當作包執行&#xff0c;便于解釋器區分執行。 2、定義類的時候&#…

22. Generate Parentheses

題目描述&#xff1a; Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n 3, a solution set is: ["((()))","(()())","(())()","()(())","()()…

php explain type等級,mysql中explain分析sql詳解

Explain舉例mysql> explain select * from event;—-————-——-——————————————————-| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |—-————-——-——————————————————-| 1 | SIMPL…

es6中的塊級作用域

塊級作用域 凡是帶{}都是塊級作用域&#xff0c;if(){} for(){} 對象{} 1.在塊級作用域下&#xff0c;var 和function跟在window下一樣&#xff0c; function有個特殊的一點&#xff0c;在塊級作用域下會提前聲明&#xff0c;不會提前定義 2.在塊級作用域下 let和const聲明的變…

Windows10安裝Ubuntu子系統+docker教程說明

說明 微軟和Ubuntu深入合作推出了基于win桌面運行Ubuntu系統.為了滿足開發同學也在win下也可以使用ubuntu的開發環境.通過利用win上的Linux子系統Ubuntu16.04能否安裝docker并正常使用 復制代碼 首先在安裝Ubuntu應用之前&#xff0c;我們要做一些事情&#xff0c;避免安裝和使…

【HDU - 2612】Find a way(bfs)

-->Find a way 直接上Chinese Descriptions: hsj和lsh最近迷上了pokemon go的游戲。在雙十一大物期中考試來臨之前&#xff0c;他們想抓一只稀有土撥鼠來攢攢人品&#xff08;因為土撥鼠的刷新地點最近來到了哈工程&#xff09;但是由于土撥鼠過于強大&#xff0c;他的雷霆半…

getMeasuredWidth和getWidth的區別

View的getWidth()和getMeasuredWidth()有什么區別嗎&#xff1f; View的高寬是由View本身和Parent容器共同決定的。getMeasuredWidth()和getWidth()分別對應于視圖繪制的measure和layout階段。getMeasuredWidth()獲取的是View原始的大小&#xff0c;也就是這個View在XML文件中配…

php圖片地址參數錯誤,圖片上傳時一直顯示請求地址錯誤怎么辦

1、出現“請求地址錯誤”的直接原因&#xff1a;圖中$action null2.根本原因&#xff1a;url美化那一節課程&#xff0c;去掉 index.php的.htaccess 文件修改的時候&#xff0c;沒有按照老師的來寫&#xff0c;所以美化url以后獲取不到地址欄參數&#xff0c;導致$action值為n…

C#寫的WebServices可運行于樹莓派

閱讀目錄 Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器Raspkate項目演示回到目錄Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器 最近在業余時間玩玩樹莓派&#xff0c;剛開始的時候在樹莓派里寫一些基于wiringPi庫的C語言程序來控制樹莓派的GPIO引腳&#x…

[導入]Ms XmlDom 異步裝載Xml文件

Ms XmlDom 異步裝載Xml文件文章來源:http://blog.csdn.net/net_lover/archive/2004/07/07/36015.aspx 轉載于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816151.html

Django的View(視圖)

Django的View&#xff08;視圖&#xff09; 一個視圖函數&#xff08;類&#xff09;&#xff0c;簡稱視圖&#xff0c;是一個簡單的Python 函數&#xff08;類&#xff09;&#xff0c;它接受Web請求并且返回Web響應。 響應可以是一張網頁的HTML內容&#xff0c;一個重定向&am…

高質量的期貨研究報告去哪里找?

作者&#xff1a;虎虎的小尾巴鏈接&#xff1a;https://www.zhihu.com/question/25331621/answer/205439281來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。這是個好問題&#xff0c;我曾經或者直到現在我也一直在追求高…

oracle中偏移,怎么對相同的坐標點偏移?

上面說的第三步必須保證每個點不能重復分配&#xff0c;有些難度&#xff0c;還是用過程代碼吧。CREATE TABLE t_offset asselect 1 id,1.001 x,1.002 y, 10 mark from dualunion allselect 2011 id,1.001 x,1.012 y, 31 mark from dualunion allselect 3…

設計模式之--原型模式

1.原型模式定義 原型模式非常簡單&#xff0c;定義如下&#xff1a; 用原型實例指定創建對象的種類&#xff0c;并且通過拷貝這些原型創建新的對象 2.通用類圖 原型模式的核心是實現Cloneable接口&#xff0c;此接口為JDK提供的一個標識接口&#xff0c;只有實現了此接口的類才…