標籤(空格分隔): 調查 ios音訊
音訊檔案的組成:檔案格式(或者音訊容器) + 資料格式(或者音訊編碼)。
我們可以通過多種不同的方法為真正的音訊資料編碼。例如caf檔案便是一種檔案格式,它能夠包含***格式,線性pcm以及其它資料格式的音訊。
我們將從音訊編碼開始闡述(而不是檔案格式),因為編碼是最重要的環節。
音效卡對聲音的處理質量可以用三個基本引數來衡量,即取樣頻率、取樣位數和聲道數。
取樣頻率:
是指單位時間內的取樣次數。取樣頻率越大,取樣點之間的間隔就越小,數位化後得到的聲音就越逼真,但相應的資料量就越大。音效卡一般提供11.025khz、22.05khz和44.1khz等不同的取樣頻率。
取樣位數:
是記錄每次取樣值數值大小的位數。取樣位數通常有8bits或16bits兩種,取樣位數越大,所能記錄聲音的變化度就越細膩,相應的資料量就越大。
聲道數是指處理的聲音是單聲道還是立體聲。單聲道在聲音處理過程中只有單資料流,而立體聲則需要左、右聲道的兩個資料流。顯然,立體聲的效果要好,但相應的資料量要比單聲道的資料量加倍。
聲音資料量的計算公式為:
資料量(位元組/秒)= (取樣頻率(hz)× 取樣位數(bit) × 聲道數)/ 8
單聲道的聲道數為1,立體聲的聲道數為2。
【例1】請計算對於5分鐘雙聲道、16位取樣位數、44.1khz取樣頻率聲音的不壓縮資料量是多少?
根據公式:資料量=(取樣頻率×取樣位數×聲道數×時間)/8
得,資料量(mb)=[44.1×1000×16×2×(5×60)] /(8×1024×1024)=50.47mb
計算時要注意幾個單位的換算細節:
時間單位換算:1分=60秒
取樣頻率單位換算:1khz=1000hz
資料量單位換算:1mb=1024×1024=1048576b
【例2】請計算對於雙聲道立體聲、取樣頻率為44.1khz、取樣位數為16位的雷射唱盤(cd-a),用乙個650mb的cd-rom可存放多長時間的**?
已知音訊檔案大小的計算公式如下:
檔案的位元組數/每秒=取樣頻率(hz)x取樣位數(位)x聲道數/8
根據上面的公式計算一秒鐘時間內的不壓縮資料量:(44.1×1000×16×2)/8=0.168mb/s
那麼,乙個650mb的cd-rom可存放的時間為:(650/0.168)/(60×60)=1.07小時。
音訊轉碼使用的框架為:audiotoolbox
使用函式: audioconverterfillcomplexbuffer
- (void)handleaudiopackets:(const void *)inputdata
numberofbytes:(uint32)numberofbytes
numberofpackets:(uint32)numberofpackets
packetdescriptions:(audiostreampacketdescription *)packetdescriptions
};audiobufferlist decodeddata;
decodeddata.mnumberbuffers = 1;
decodeddata.mbuffers[0].mnumberchannels = _canonicalasbd.mchannelsperframe;
decodeddata.mbuffers[0].mdatabytesize = _decodebuffersize;
decodeddata.mbuffers[0].mdata = _decodebuffer;
uint32 iooutputdatapackets1, iooutputdatapackets2;
osstatus decodingstatus, encodingstatus;
while (1)
};audiobufferlist encodeddata;
encodeddata.mnumberbuffers = 1;
encodeddata.mbuffers[0].mnumberchannels = _destinationasbd.mchannelsperframe;
encodeddata.mbuffers[0].mdatabytesize = _encodebuffersize;
encodeddata.mbuffers[0].mdata = _encodebuffer;
while (1)
else
if (encodingstatus == os_status_done)
}// end encoding}}
else
if (decodingstatus == os_status_done)
}}
使用函式 extaudiofileread
void
startconvert
(extaudioconvertersettings* settings)
checkerror(extaudiofilewrite(settings->outputfile,
framescount,
&outputbufferlist),
"extaudiofilewrite failed");
}}
iOS音訊 使用System Sound API
可以用來製作遊戲音效和操作音,以及提醒使用者要做某件事,還可以發出振動提醒,但是只能在iphone裝置上。主要用於遊戲音效和操作聲音等。import viewcontroller.h import inte ce viewcontroller ibaction playsystemsound id ...
iOS音訊 使用OpenAL API
是為了更好地控制音效。openal構成 由三個實體構成 openal與3d空間中的聲音 採用3d笛卡爾座標系,右手座標系。openal api openal應用開發流程 其中初始化快取是最為麻煩的,其詳細過程是 開始 開啟檔案 獲得實際音訊檔案大小 開闢音訊記憶體資料空間 讀取檔案到記憶體中 關閉檔...
PHP開發之上傳音訊
今天給大家分享乙個比較簡單易懂的技術,就是音訊上傳,原理和檔案上傳一樣,不要想的太複雜,希望對你有所幫助 在給大家分享之前,這裡推薦下我自己建的php開發 vip資料 平台 638965404,不管你是小白還是大牛,我都挺歡迎,不定期分享乾貨,包括2017最新的php企業案例學習資料和零基礎入門教程...