在Demo中集成Ijkplayer尝试拉取网络视频流进行播放时,发现拉取后出现视频无法全部在屏幕中播放,显示效果如下(测试地址为香港卫视的rtmp视频源:rtmp://live.hkstv.hk.lxdns.com/live/hks)
后来查看Ijkplayer源码中的IjkVideoView发现,其中定义的private int mCurrentAspectRatio = s_allAspectRatio[1]; 而s_allAspectRatio[1]的值为 IRenderView.AR_ASPECT_FILL_PARENT,可以知道其意思是填充父布局,即它会伸缩视频填满该IjkVideoView控件,但不会改变视频比例,所以出现上图中的情况,视频的左右两边无法正常显示。
在查看s_allAspectRatio中的其他值后,我们发现s_allAspectRatio[0]为 IRenderView.AR_ASPECT_FIT_PARENT,即它会自己适应控件大小,它不保证整个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];