在Demo中集成Ijkplayer嘗試?yán)【W(wǎng)絡(luò)視頻流進(jìn)行播放時(shí),發(fā)現(xiàn)拉取后出現(xiàn)視頻無法全部在屏幕中播放懊直,顯示效果如下(測(cè)試地址為香港衛(wèi)視的rtmp視頻源:rtmp://live.hkstv.hk.lxdns.com/live/hks)
后來查看Ijkplayer源碼中的IjkVideoView發(fā)現(xiàn)扒吁,其中定義的private int mCurrentAspectRatio = s_allAspectRatio[1]; 而s_allAspectRatio[1]的值為 IRenderView.AR_ASPECT_FILL_PARENT,可以知道其意思是填充父布局室囊,即它會(huì)伸縮視頻填滿該IjkVideoView控件雕崩,但不會(huì)改變視頻比例,所以出現(xiàn)上圖中的情況融撞,視頻的左右兩邊無法正常顯示盼铁。
在查看s_allAspectRatio中的其他值后,我們發(fā)現(xiàn)s_allAspectRatio[0]為 IRenderView.AR_ASPECT_FIT_PARENT尝偎,即它會(huì)自己適應(yīng)控件大小饶火,它不保證整個(gè)IjkVideoView控件全為我們所播放的視頻,但是保證了視頻的完全顯示致扯,我們修改mCurrentAspectRatio = s_allAspectRatio[0]后肤寝,即可正常顯示視頻
private static final int[] s_allAspectRatio = {
IRenderView.AR_ASPECT_FIT_PARENT,
IRenderView.AR_ASPECT_FILL_PARENT,
IRenderView.AR_ASPECT_WRAP_CONTENT,
// IRenderView.AR_MATCH_PARENT,
IRenderView.AR_16_9_FIT_PARENT,
IRenderView.AR_4_3_FIT_PARENT};
private int mCurrentAspectRatioIndex = 0;
private int mCurrentAspectRatio = s_allAspectRatio[0];