新聞中心
aifc —- 讀寫 AIFF 和 AIFC 文件
源代碼: Lib/aifc.py

創(chuàng)新互聯(lián)建站是專業(yè)的邵武網(wǎng)站建設(shè)公司,邵武接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行邵武網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
從版本 3.11 開始標記為過時,將在版本 3.13 中移除。: aifc 模塊已被棄用(請參閱 (see PEP 594 了解詳情)。
本模塊提供讀寫 AIFF 和 AIFF-C 文件的支持。AIFF 是音頻交換文件格式 (Audio Interchange File Format),一種用于在文件中存儲數(shù)字音頻采樣的格式。AIFF-C 是該格式的更新版本,其中包括壓縮音頻數(shù)據(jù)的功能。
音頻文件內(nèi)有許多參數(shù),用于描述音頻數(shù)據(jù)。采樣率或幀率是每秒對聲音采樣的次數(shù)。通道數(shù)表示音頻是單聲道,雙聲道還是四聲道。每個通道的每個幀包含一次采樣。采樣大小是以字節(jié)表示的每次采樣的大小。因此,一幀由 nchannels * samplesize (通道數(shù)*采樣大?。┳止?jié)組成,而一秒鐘的音頻包含 nchannels * samplesize * framerate (通道數(shù)*采樣大小*幀率)字節(jié)。
例如,CD 質(zhì)量的音頻采樣大小為 2 字節(jié)(16位),使用 2 個聲道(立體聲),且?guī)俾蕿?44,100 幀/秒。這表示幀大小為 4 字節(jié) (2*2),一秒鐘占用 2*2*44100 字節(jié)(176,400 字節(jié))。
aifc 模塊定義了以下函數(shù):
aifc.open(file, mode=None)
打開一個 AIFF 或 AIFF-C 文件并返回一個對象實例,該實例具有下方描述的方法。參數(shù) file 是文件名稱字符串或 文件對象。當打開文件用于讀取時,mode 必須為 'r' 或 'rb',當打開文件用于寫入時,mode 必須為 'w' 或 'wb'。如果該參數(shù)省略,則使用 file.mode 的值(如果有),否則使用 'rb'。當文件用于寫入時,文件對象應(yīng)該支持 seek 操作,除非提前獲知寫入的采樣總數(shù),并使用 writeframesraw() 和 setnframes()。open() 函數(shù)可以在 with 語句中使用。當 with 塊執(zhí)行完畢,將調(diào)用 close() 方法。
在 3.4 版更改: 添加了對 with 語句的支持。
當打開文件用于讀取時,由 open() 返回的對象具有以下幾種方法:
aifc.getnchannels()
返回音頻的通道數(shù)(單聲道為 1,立體聲為 2)。
aifc.getsampwidth()
返回以字節(jié)表示的單個采樣的大小。
aifc.getframerate()
返回采樣率(每秒的音頻幀數(shù))。
aifc.getnframes()
返回文件中的音頻幀總數(shù)。
aifc.getcomptype()
返回一個長度為 4 的字節(jié)數(shù)組,描述了音頻文件中使用的壓縮類型。對于 AIFF 文件,返回值為 b'NONE'。
aifc.getcompname()
返回一個字節(jié)數(shù)組,可轉(zhuǎn)換為人類可讀的描述,描述的是音頻文件中使用的壓縮類型。對于 AIFF 文件,返回值為 b'not compressed'。
aifc.getparams()
返回一個 namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname),與 get*() 方法的輸出相同。
aifc.getmarkers()
返回一個列表,包含音頻文件中的所有標記。標記由一個 3 元素的元組組成。第一個元素是標記 ID(整數(shù)),第二個是標記位置,從數(shù)據(jù)開頭算起的幀數(shù)(整數(shù)),第三個是標記的名稱(字符串)。
aifc.getmark(id)
根據(jù)傳入的標記 id 返回元組,元組與 getmarkers() 中描述的一致。
aifc.readframes(nframes)
從音頻文件讀取并返回后續(xù) nframes 個幀。返回的數(shù)據(jù)是一個字符串,包含每個幀所有通道的未壓縮采樣值。
aifc.rewind()
倒回讀取指針。下一次 readframes() 將從頭開始。
aifc.setpos(pos)
移動讀取指針到指定的幀上。
aifc.tell()
返回當前的幀號。
aifc.close()
關(guān)閉 AIFF 文件。調(diào)用此方法后,對象將無法再使用。
打開文件用于寫入時,open() 返回的對象具有上述所有方法,但 readframes() 和 setpos() 除外,并額外具備了以下方法。只有調(diào)用了 set*() 方法之后,才能調(diào)用相應(yīng)的 get*() 方法。在首次調(diào)用 writeframes() 或 writeframesraw() 之前,必須填寫除幀數(shù)以外的所有參數(shù)。
aifc.aiff()
創(chuàng)建一個 AIFF 文件,默認創(chuàng)建 AIFF-C 文件,除非文件名以 '.aiff' 為后綴,在此情況下默認創(chuàng)建 AIFF 文件。
aifc.aifc()
創(chuàng)建一個 AIFF-C 文件。 默認創(chuàng)建 AIFF-C 文件,除非文件名以 '.aiff' 為后綴,在此情況下默認創(chuàng)建 AIFF 文件。
aifc.setnchannels(nchannels)
指明音頻文件中的通道數(shù)。
aifc.setsampwidth(width)
指明以字節(jié)為單位的音頻采樣大小。
aifc.setframerate(rate)
指明以每秒幀數(shù)表示的采樣頻率。
aifc.setnframes(nframes)
指明要寫入到音頻文件的幀數(shù)。 如果未設(shè)定此形參或者未正確設(shè)定,則文件需要支持位置查找。
aifc.setcomptype(type, name)
指明壓縮類型。 如果未指明,則音頻數(shù)據(jù)將不會被壓縮。 在 AIFF 文件中,壓縮是無法實現(xiàn)的。 name 形參應(yīng)當為以字節(jié)數(shù)組表示的人類可讀的壓縮類型描述,type 形參應(yīng)當為長度為 4 的字節(jié)數(shù)組。 目前支持的壓縮類型如下: b'NONE', b'ULAW', b'ALAW', b'G722'。
aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
一次性設(shè)置上述所有參數(shù)。 該參數(shù)是由多個形參組成的元組。 這意味著可以使用 getparams() 調(diào)用的結(jié)果作為 setparams() 的參數(shù)。
aifc.setmark(id, pos, name)
添加具有給定 id (大于 0),以及在給定位置上給定名稱的標記。 此方法可在 close() 之前的任何時候被調(diào)用。
aifc.tell()
返回輸出文件中的當前寫入位置。 適用于與 setmark() 進行協(xié)同配合。
aifc.writeframes(data)
將數(shù)據(jù)寫入到輸出文件。 此方法只能在設(shè)置了音頻文件形參之后被調(diào)用。
在 3.4 版更改: 現(xiàn)在可接受任意 bytes-like object。
aifc.writeframesraw(data)
類似于 writeframes(),不同之處在于音頻文件的標頭不會被更新。
在 3.4 版更改: 現(xiàn)在可接受任意 bytes-like object。
aifc.close()
關(guān)閉 AIFF 文件。 文件的標頭會被更新以反映音頻數(shù)據(jù)的實際大小。 在調(diào)用此方法之后,對象將無法再被使用。
當前標題:創(chuàng)新互聯(lián)Python教程:aifc—-讀寫AIFF和AIFC文件
當前路徑:http://www.dlmjj.cn/article/cdhcgpo.html


咨詢
建站咨詢
