HTC(高通) 編碼端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //實(shí)際編碼384 480
解碼端:zhanganl width:360 height:480 stride:384 output_buffer_size:276480
mate7(海思) 編碼端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //實(shí)際編碼368 480
解碼端:zhanganl width:368 height:480 stride:368 output_buffer_size:264960
紅米note(高通) 編碼端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //實(shí)際編碼368 480
解碼端:zhanganl width:360 height:480 stride:368 output_buffer_size:278528
金立f103(MTK) 編碼端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //實(shí)際編碼368 480
解碼端:zhanganl width:360 height:480 stride:360 output_buffer_size:259200
三星S6(Exynos) 編碼端:zhanganl encoded image width :368 height:480 fps :0
frame_cropping_flag:1 left_offset:0 right_offset:4 top_offset:0 bottom_offset:0
結(jié)論:對(duì)于非16對(duì)齊的分辨率,都會(huì)對(duì)齊胀瞪,但是解碼端植阴,解碼出來(lái)的結(jié)果不同觅够,這個(gè)主要適配點(diǎn)颂斜。
華為mate7,在解碼360*480變到240*320的變分辨率時(shí)莫杈,會(huì)有很大的問題抵赢,還會(huì)保持360*480,而沒有變化分辨率绑雄,導(dǎo)致一個(gè)大屏和一個(gè)小屏同時(shí)存在展辞。
三星note5 n9200
報(bào)如下錯(cuò)誤:
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xb7
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] string: 'Thread-1334 - 0??'
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] in call to NewStringUTF
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] "<native thread without managed peer>" prio=10 tid=23 Runnable (still starting up)
參考文章:
解決方法則為在AndroidMainifest.xml中的application中加入android:debuggable="false"。
Found target encoder for mime video/avc : OMX.MTK.VIDEO.ENCODER.AVC. Color: 0x13
Found target encoder for mime video/avc : OMX.IMG.TOPAZ.VIDEO.Encoder. Color: 0x15
Found target encoder for mime video/avc : OMX.qcom.video.encoder.avc. Color: 0x15
Found target encoder for mime video/avc : OMX.Exynos.AVC.Encoder. Color: 0x13
Found target encoder for mime video/avc : OMX.Exynos.AVC.Encoder. Color: 0x15
三星S6 240320 支持 360480 花屏
編解碼端還有stride 適配問題
對(duì)于360*480的編碼后万牺,stride會(huì)變成368罗珍,而華為海思解碼后,width和stride都會(huì)解碼成368脚粟,對(duì)渲染有影響覆旱,圖像右邊出現(xiàn)綠條。
http://stackoverflow.com/questions/26257474/select-h264-profile-when-encoding-with-mediacodec-and-mtk-codec
http://xcshen.blog.51cto.com/2835389/552669/
統(tǒng)一所有機(jī)器使用的profile和level珊楼,避免有的手機(jī)使用cabac編碼通殃,而解碼端使用baseline,不支持cabac,無(wú)法解碼
format.setInteger("profile", 0x01);
format.setInteger("level", 0x01);
關(guān)于mediacodec解碼遇到的相關(guān)問題總結(jié):
1、解碼過程中變化分辨率厕宗,mate7等會(huì)大小屏画舌。
2、對(duì)于360*480等不是16整數(shù)倍的寬高已慢,不同機(jī)器的表現(xiàn)不一曲聂,一系列適配問題。
3佑惠、解碼過程中重新設(shè)置解碼器朋腋,會(huì)出現(xiàn)問題。
華為mate7編碼720*1280時(shí)膜楷,會(huì)分為2個(gè)slice旭咽。
相關(guān)文章:
http://blog.csdn.net/u012917616/article/details/40948469
http://blog.csdn.net/zqs62761130/article/details/49007879
http://bigflake.com/mediacodec/