MediaCodec編碼 音訊pts設定

2021-10-01 08:43:02 字數 759 閱讀 5147

音訊的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...