关于Android用Ijkplayer拉流的视频比例问题

2017-10-11  本文已影响0人  NullUser

在Demo中集成Ijkplayer尝试拉取网络视频流进行播放时,发现拉取后出现视频无法全部在屏幕中播放,显示效果如下(测试地址为香港卫视的rtmp视频源:rtmp://live.hkstv.hk.lxdns.com/live/hks

001.jpg

后来查看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]后,即可正常显示视频

002.jpg
    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];
上一篇下一篇

猜你喜欢

热点阅读