音頻文件(Audio File)
1、有兩個概念 (1)、文件格式(File Format or Audio Containers)——描述文件本身的格式,裡面的音頻數據可以用不同的編碼格式。 例如:caf文件就是一種文件格式。這種文件裡面包含的音頻數據可以是MP3編碼,線性PCM編碼或者其他的編碼格式。 (2)、數據格式(Data Format or Audio Encoding)——音頻數據的編碼格式。 2、數據格式(Data Format or Audio Encoding) (1)、AAC (2)、HE-AAC (3)、AMR (4)、ALAC (5)、iLBC (6)、IMA4 (7)、linear PCM (8)、u-law and a-law (9)、MP3 3、我應該選擇那種數據格式? 實際上,只有少數的數據格式更適合使用,在選擇數據格式時,要了解下面兩個方面 (1)、你可以又快又好的播放line PCM、IMA4和一些其他的無壓縮或簡單壓縮的數據格式。 (2)、對於一些高級的數據格式,例如AAC、MP3和ALAC等,iPhone有硬件來支持快速解碼,但問題在於,硬件解碼每一次只能處理一個文件。當有多個文件要處理時,其他的解碼會放在軟件中解碼,速度會變得很慢。 所以,選擇數據格式,需要考慮以下兩個方面: (1)、如果空間不是問題:所有的數據格式都采用linear PCM,不僅僅因為它解碼最快,而且可以同時播放多個同樣的數據格式,而不會引起CPU資源消耗過度。 (2)、如果空間是問題:那麼如果是背景音樂文件,請選擇AAC數據格式,如果是音效文件,選擇IMA4數據格式。 4、Linear PCM的幾種變種 Linear PCM是iPhone上最喜歡的無壓縮數據格式。 根據音頻數據如何存儲,Linear PCM有幾個變種。例如,數據可以存儲成大端格式,小端格式;數據可以存儲成浮點型,整型,和各種位寬。 iPhone上最喜歡的linear PCM變種是小端,整型,16-bit或者LEI16。 MAC OSX上最喜歡的linear PCM變種是native-endian floating point 32-bit 因為音頻文件經常在MAC上創建,所以在iPhone上使用時最好先檢查一下,最好轉換成iPhone喜歡的格式後再用。 5、文件格式(File formats or Audio Containers) iPhone支持許多文件格式,包括MPEG-1(.mp3),MPEG-2 ADTS(.aac),AIFF,CAF和WAVE。這裡的重點是,通常情況下,你只需要使用CAF,因為它可以包含iPhone支持的任何數據格式(編碼格式),而且它是iPhone最喜歡的文件格式。 6、Bit Rates bit rates是和數據格式(編碼格式)相關的一個技術指標。bit rate是指音頻文件每秒占用(takes up)的字節數(bytes)。 一些數據格式例如AAC和MP3讓你指定音頻文件壓縮成的字節數。越低的bite rate,音頻質量越差。 你應該根據實際情況選擇合適的bit rate,嘗試不同的bit rates,試圖在file size和quality之間找一個最合適的平衡點。如果你的文件大部分是speech,你可能get away with a lower bit rate。 下表給出通用的bit rate 32kbit/s: AM Radio quality 48kbit/s: Common rate for long speech podcasts 64kbit/s: Common rate for normal-length speech podcasts 96kbit/s: FM Radio quality 128kbit/s: Most common bit rate for MP3 music 160kbit/s: Musicians or sensitive listeners prefer this from 128kbit/s 192kbit/s: Digital radio broadcasting quality 320kbit/s: Virtually indistinguishable from CDs 500kbit/s-1,411kbit/s: Lossless audio encoding such as linear PCM 7、采樣率 采樣率也是和數據格式相關的一個技術指標。 當把一個模擬信號轉換成一個數字信號的時候,采樣率描述了 波形被采樣的頻率 (即每秒鐘采樣多少次波形)。 大部分情況下,44100Hz會被采用,因為它和CD Audio的采樣率是一樣的。 FAA: 1、how to record audio as mp3 file by using AvAudiorecorder http://stackoverflow.com/questions/10314510/how-to-record-audio-as-mp3-file-by-using-avaudiorecorder 2、The Problem is kAudioFormatMPEGLayer3 which is not supported by AVAudioRecorder. Alternatively you can use kAudioFormatAppleIMA4 for your recording purpose. Finally you can write your own encoding logic to convert kAudioFormatAppleIMA4 in to MP3 Format. The other supported encoding for Recording purpose are kAudioFormatMPEG4AAC kAudioFormatAppleLossless kAudioFormatAppleIMA4 kAudioFormatiLBC kAudioFormatULaw kAudioFormatLinearPCM For more info you can refer to this post of SO.