ios解析G711A

前段時(shí)間在做攝像頭想關(guān)的項(xiàng)目的時(shí)候,在播放卡錄得時(shí)候,攝像頭返回來的數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)返回來的音頻的格式是將pcm編碼成G711A的數(shù)據(jù)。所以只能將G711A轉(zhuǎn)換為pcm,然后在進(jìn)行播放。于是,就瘋狂的在網(wǎng)上找資料。
但是,并沒有找到G711A轉(zhuǎn)pcm的相關(guān)資料。
于是,就開始研究編碼格式.


先補(bǔ)充一下pcm和G711的編碼方式
1)pcm
PCM是一種編碼格式,pcm是裸流。
所以,pcm我們直接就能夠就行播放


2)G711

編碼原理請(qǐng)看這篇

在開始講G711A轉(zhuǎn)為pcm的時(shí)候,我們先了解一下pcm是怎么被轉(zhuǎn)換為G711的。
以下的相互轉(zhuǎn)換,都會(huì)用到一個(gè)三方庫。


屏幕快照 2018-06-21 下午3.35.29.png

1)pcm-> G711
從上面的編碼原理可以知道,pcm轉(zhuǎn)G711是進(jìn)行了壓縮轉(zhuǎn)換。
起壓縮率為1:2, 即把16位數(shù)據(jù)壓縮成8位

    NSUInteger datalength = [inputData length]; 
    Byte *byteData = (Byte *)[inputData bytes];   
    short *pPcm = (short *)byteData;  
    int outlen = 0;    
    int len =(int)datalength / 2;    
    Byte * G711Buff = (Byte *)malloc(len);    
    memset(G711Buff,0,len);   
    int i;    
    for (i=0; i<len; i++) {
        G711Buff[i] = linear2alaw(pPcm[i]);      
    }    
    outlen = i;   
    Byte *sendbuff = (Byte *)G711Buff;   
    NSData * sendData = [[NSData alloc]initWithBytes:sendbuff length:len];

2)G711A->pcm
因?yàn)槲覀冎纏cm轉(zhuǎn)G711是將pcm進(jìn)行了壓縮,那么G711轉(zhuǎn)pcm我們就需要將G711重新編碼后,長度會(huì)增加會(huì)原來的兩倍。

我收到的數(shù)據(jù)是char類型的buffer數(shù)據(jù)

dataPtr:(const char *)data_ptr

遍歷收到的數(shù)據(jù),解析每個(gè)字節(jié)

short * pcmOuT = (short *)(malloc(dataLen*2));//因?yàn)檗D(zhuǎn)換后長度為原來的兩倍,所以申請(qǐng)一個(gè)數(shù)據(jù)長度兩倍的數(shù)組
for (int i =0; i<dataLen; i++) {
    pcmOuT[i] = (int16_t)alaw2linear(data_ptr[i]);
}

這樣解析出來的數(shù)據(jù)就是pcm。可以截止播放.
G711U轉(zhuǎn)pcm也是類似的做法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,210評(píng)論 3 119
  • 視頻 視頻實(shí)質(zhì):純粹的視頻(不包括音頻)實(shí)質(zhì)上就是一組幀圖片,經(jīng)過視頻編碼成為視頻(video)文件再把音頻(au...
    勇敢的_心_閱讀 3,207評(píng)論 1 30
  • 微風(fēng),細(xì)雨,落葉,別家院,行走的人;鳴笛,車窗,站臺(tái),帆布?jí)Γ^客的腳。 霓虹,闌珊,溪水,千里馬,閨中的琴;滴水...
    Cherry茜閱讀 185評(píng)論 0 1
  • (一) 在銀輝四射的朵朵輕云中飛馳的點(diǎn)點(diǎn)繁星,照亮了黑魆魆的大地,同時(shí)也照亮了面色憔悴的我。我拄著...
    風(fēng)間大輔閱讀 479評(píng)論 0 0
  • 近日,“一企一證”實(shí)施在即,將進(jìn)一步調(diào)整實(shí)施工業(yè)產(chǎn)品生產(chǎn)許可證管理的產(chǎn)品目錄,取消19類工業(yè)產(chǎn)品生產(chǎn)許可證管理,將...
    我可能是個(gè)假百曉生閱讀 310評(píng)論 0 0

友情鏈接更多精彩內(nèi)容