關於iPhone音頻的那些事


音頻文件(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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM