音訊的pts設定,就需要小心了。
首先,根據audiorecord錄音器配置的引數,根據取樣率,聲道數,取樣位,和audiorecord設定的輸出buffer的大小,計算pts。
如下:
buffer_duration_us = 1000000 * ((double) maudiobuffersize / maudiochanelcount / 2 / maudiosamplerate);
buffer_duration_us:每一幀pcm,需要疊加的時間間隔。
pts計算
pts = (long) (firstpresentationtimeus + mcount * buffer_duration_us);
if (getptsus() - pts > 300000)
firstpresentationtimeus:第一幀編碼的pcm,對於當前系統的時間戳。
mcount:表示第幾幀pcm資料。
這裡以300毫秒為乙個差值,如果當前設定的pts和系統的時間戳相差大於300毫秒的話,做乙個校正。
然後設定pts給編碼器。
maudioencoder.queueinputbuffer(inputindex, 0, chunkpcm.length, pts, 0)
獲取當前時間戳
protected long getptsus()
用MediaCodec實現多段視音訊的擷取與拼接
視音訊編輯中,對多段 素材進行擷取和拼接是非常常見的操作。擷取和拼接實際上是對 檔案資料重新進行組合的過程。要實現這些功能,就需要對 檔案進行編譯碼操作,即先解碼要處理的 檔案資料,然後再按照某種規則對這些資料進行編碼,以生成我們所需的目標。android提供的mediacodec及其相關類為我們提...
MPEG音訊編碼
一.實驗原理 1.多項濾波器組 用來分割子帶,將pcm樣本變換到32個子帶的頻域訊號 2.量化編碼 1 比例因子的選取及編碼 對各個子帶每12個樣點進行一次比例因子計算。先定出12個樣點中絕對值的最大值。查比例因子表中比這個最大值大的最小值作為比例因子。用6位元表示。第2層的一幀對應36個子帶樣值,...
歐洲系列音訊編碼工程和研究音訊編碼學校
kth rwth flexcode 德國漢諾瓦大學 asac analysis synthesis audio coding 也就是後來mpeg 4 audio 裡面的hlin,主要開發者是heiko purnhagen sicas sinusoidal coding of audio and sp...