/***/** author : ych
* email : [email protected]
* time : 2018/08/18
* desc : 解碼器 -》pcm
* version:
*
public class audiodecoder2pcm }}
return instance;
}public void setdata(byte bytes)
public byte getdata()
public void startdecoder(string path)
//判斷當前檔案型別是否是音訊
string mime=format.getstring(mediaformat.key_mime);
if (mime.startswith("audio/"))
//建立mediocodec物件
mdecoder = mediacodec.createdecoderbytype(mime);
//配置mediacodec
mdecoder.configure(format,null,null,0);
if (mdecoder==null)
//啟動mediocodec等待傳入資料
mdecoder.start();
//啟動執行緒
new thread(decoderandplayrunnable).start();
} catch (ioexception e)
}runnable decoderandplayrunnable = new runnable()
};private void decoderandplay() else
//從mediadecoder佇列取出一幀解碼後的資料 引數bufferinfo上面已介紹 10000同樣為等待時間 同上-1代表一直等待,0代表不等待。此處單位為微秒
//此處建議不要填-1 有些時候並沒有資料輸出,那麼他就會一直卡在這 等待
int outindex = mdecoder.dequeueoutputbuffer(info, 0);
switch (outindex)}}
mdecoder.stop();
mdecoder.release();
mdecoder=null;
mextractor.release();
mextractor=null;}}
音訊PCM知識整理
pcm pulse code modulation 脈衝編碼調製。人耳聽到的是模擬訊號,pcm是把聲音從模擬訊號轉化為數碼訊號的技術。原理是用乙個固定的頻率對模擬訊號進行取樣,取樣後的訊號在波形上看就像一串連續的幅值不一的脈衝 脈搏似的短暫起伏的電衝擊 把這些脈衝的幅值按一定精度進行量化,這些量化後...
PCM音訊和音量調節
聲音的本質是一種能量波,由振動而產生的能量波,通過傳輸介質傳輸出去。聲音有三個屬性 波長是決定音調高低 振幅是決定音量高低 波紋是決定音色。pcm pulse code modulation,脈衝編碼調製 音訊資料是未經壓縮的音訊取樣資料裸流,它是由模擬訊號經過取樣 量化 編碼轉換成的標準數字音訊資...
通過pcm音訊資料計算分貝
引數 pref 就是聲音總的振幅最大值 prms 就是當前聲音的振幅值 lp 就是我們需要的聲音分貝值了。比如 我們聲音是無符號16bit深度的,那麼其每個取樣點的值應該在 0 2 16 1既 0 65535 範圍內,帶入公式我們可以計算到 不用除以最大振幅值 20 log 65535 96.32d...