關於mediacodec
mediacodec 是android系統提供的硬體編碼器,它可以利用裝置的硬體來完成編碼,從而提高編碼效率,並可以減輕cpu壓力降低電量的使用,但是必須是4.1以上的系統才可以使用。
mediacodec編碼出來的aac資料是裸的aac,即aac的原始資料塊,乙個aac原始資料塊的長度是可變的,對原始幀加上adts頭進行封裝,就形成了adts幀。adts的全稱是audio data transport stream,是aac音訊的傳輸流格式。
使用流程
1.初始化mediacodec
private mediaformat encoderformat;
private mediacodec encoder;
private fileoutputstream fos;
private mediacodec.bufferinfo info;
private
int perpcmsize;
private
byte
outbytebuffer;
private
int aacsamplerate =4;
private
void
initmediacodec
(int samperate, file outfile)
encoder.
configure
(encoderformat,null,null,mediacodec.configure_flag_encode)
; fos =
newfileoutputstream
(outfile)
; encoder.
start()
;}catch
(ioexception e)
}
2.編碼private
void
encodecpcmtoaac
(int size,
byte
buffer)
int index = encoder.
dequeueoutputbuffer
(info,0)
;while
(index >=0)
catch
(ioexception e)}}
}
3.新增adts頭資訊private
void
addadtsheader
(byte
packet,
int packetlen,
int samplerate)
4.釋放mediacodecprivate
void
releasemediacodec()
catch
(ioexception e)
finally
catch
(ioexception e)}}
}
Android使用Application總結
第二步 配置全域性的context 第三步 使用,使用的時候用的時候根據類的名稱訪問context void onconfigurationchanged configuration newconfig void oncreate 這裡才是真正的入口點。void onlowmemory void o...
Android動畫使用
android動畫基本上分為兩個時代,乙個是3.0 api14 之前的animation動畫,乙個是3.0之後的animator動畫。採用animatorset和objectanimator配合,使用objectanimator進行更精細化控制,並且能夠自動驅動,多個objectanimator組合...
Android 使用Databinding遇到的坑
modle的get和set方法名稱在get set之後的第乙個字母一定要大寫 gradle裡面的apt版本要1.6以上,現在用的是1.8 和butterknife一起用的時候,需要在butterknife呼叫init 之後設定binding的set x方法設定資料物件 如果出現錯誤,一般在錯誤的最後...