日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3从零学习-5.11.2、 aifc - 读取和写入AIFF和aifc文件

發(fā)布時間:2024/3/26 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3从零学习-5.11.2、 aifc - 读取和写入AIFF和aifc文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

源代碼:Lib / aifc.py

這個模塊提供了對讀寫AIFF和AIFF- c文件的支持。AIFF是一種音頻交換文件格式,用于在文件中存儲數字音頻樣本。AIFF-C是該格式的更新版本,它包含了壓縮音頻數據的能力。

?

音頻文件有許多描述音頻數據的參數。采樣率或幀率是聲音每秒被采樣的次數。頻道的數量表明,如果音頻是單聲道,立體聲,或quadro。每個幀由每個通道一個樣本組成。樣本大小是以字節(jié)為單位的每個樣本的大小。因此,一個幀由nchannels *采樣字節(jié)組成,而一秒鐘的音頻由nchannels *采樣字節(jié)組成。

?

例如,CD質量的音頻有兩個字節(jié)(16位)的樣本大小,使用兩個通道(立體聲)和有44100幀/秒的幀率。這使得幀大小為4字節(jié)(2*2),一秒鐘的值占用2*2*44100字節(jié)(176,400字節(jié))。

?

模塊aifc定義了以下功能:

?

aifc.open(file, mode=None)

打開一個AIFF或AIFF- c文件,并返回一個帶有下面描述的方法的對象實例。參數文件是命名文件的字符串或文件對象。當必須打開文件進行讀取時,模式必須為'r'或'rb',當必須打開文件進行寫入時,模式必須為'w'或'wb'。如果省略,文件。如果存在,則使用mode,否則使用'rb'。當用于寫入時,文件對象應該是可查找的,除非您提前知道總共要寫入多少個示例并使用writeframesraw()和setnframes()。open()函數可以在with語句中使用。當with塊完成時,將調用close()方法。

open()在打開文件進行讀取時返回的對象有以下方法:

?

aifc.getnchannels()

返回音頻通道的數量(1為單聲道,2為立體聲)。

?

aifc.getsampwidth()

以字節(jié)為單位返回單個樣本的大小。

?

aifc.getframerate()

返回采樣率(每秒音頻幀數)。

?

aifc.getnframes()

返回文件中音頻幀的數目。

?

aifc.getcomptype()

返回長度為4的字節(jié)數組,描述音頻文件中使用的壓縮類型。對于AIFF文件,返回值為b' none '。

?

aifc.getcompname()

返回可轉換為音頻文件中使用的壓縮類型的人類可讀描述的字節(jié)數組。對于AIFF文件,返回值為b'未壓縮'。

?

aifc.getparams()

返回一個namedtuple () (nchannels sampwidth,幀速率,nframes, comptype, compname),與得到*()方法的輸出相同。

?

aifc.getmarkers()

返回音頻文件中的標記列表。標記由三個元素組成的元組。第一個是標記ID(一個整數),第二個是標記在幀中從數據開始的位置(一個整數),第三個是標記的名稱(一個字符串)。

?

aifc.getmark(id)

返回getmarkers()中描述的具有給定id的標記的元組。

?

aifc.readframes(nframes)

從音頻文件讀取并返回下一個nframes幀。返回的數據是一個字符串,每個幀包含所有通道的未壓縮樣本。

?

aifc.rewind()

倒回讀指針。下一個readframes()將從頭開始。

?

aifc.setpos(pos)

查找指定的幀號。

?

aifc.tell()

返回當前幀號。

?

aifc.close()

關閉AIFF文件。調用此方法后,將不再使用該對象。

?

當文件被打開以便寫入時,open()返回的對象具有上述所有方法,除了readframes()和setpos()。此外,存在以下方法。get*()方法只能在調用相應的set*()方法之后調用。在第一個writeframes()或writeframesraw()之前,除了幀數以外的所有參數都必須填寫。

?

aifc.aiff()

創(chuàng)建一個AIFF文件。默認情況下,創(chuàng)建一個AIFF-C文件,除非文件名稱以'結尾。在這種情況下,默認是一個aiff文件。

?

aifc.aifc()

創(chuàng)建一個AIFF-C文件。默認情況下,創(chuàng)建一個AIFF-C文件,除非文件名稱以'結尾。在這種情況下,默認是一個aiff文件。

?

aifc.setnchannels(nchannels)

指定音頻文件中的通道數。

?

aifc.setsampwidth(width)

指定音頻樣本的大小,以字節(jié)為單位。

?

aifc.setframerate(rate)

指定采樣頻率(單位為每秒幀數)。

?

aifc.setnframes(nframes)

指定要寫入音頻文件的幀數。如果沒有設置該參數,或者設置不正確,則文件需要支持查找。

?

aifc。setcomptype(type, name)

指定壓縮類型。如果沒有指定,音頻數據將不會被壓縮。在AIFF文件中,壓縮是不可能的。name參數應該是人類可讀的對壓縮類型的描述,作為字節(jié)數組,類型參數應該是長度為4的字節(jié)數組。目前支持以下壓縮類型:b' none ', b' ulaw ', b' alaw ', b' g722 '。

?

aifc。setparams(nchannels, sampwidth, framerate, comptype, compname)

立即設置以上所有參數。參數是由各種參數組成的元組。這意味著可以使用getparams()調用的結果作為setparams()的參數。

?

aifc。setmark(id, pos, name)

在給定位置添加具有給定id(大于0)和給定名稱的標記。可以在close()之前的任何時候調用此方法。

?

aifc.tell()

返回輸出文件中的當前寫入位置。與setmark()結合使用。

?

aifc.writeframes(data)

將數據寫入輸出文件。此方法只能在設置了音頻文件參數后調用。

?

aifc.writeframesraw(data)

類似于writeframes(),除了音頻文件的頭沒有被更新。

?

aifc.close ()

關閉AIFF文件。文件的頭被更新以反映音頻數據的實際大小。調用此方法后,將不再使用該對象。

?

總結

以上是生活随笔為你收集整理的python3从零学习-5.11.2、 aifc - 读取和写入AIFF和aifc文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。