Android开发GSYVideoPlayer6.0.3竖版视频变形问题

二、解决思路

原因:根据我反复查看它源码,确定视频控件的宽高算的有问题,一步步去看赋值,结果是ijk的c代码计算出来的,这肯定是没法改的

开始找解决方案:

  • 先去找GSYVideoPlayer的github,发现用它的最新的版本是正常的。这给了点解决它的信心
  • 但是我项目还是用的是android suppourt,GSYVideoPlayer最新版用的是androidx。这时升级项目为androidx明显不行,工作量巨大,还要测试。果断放弃
  • 然后去找GSYVideoPlayer6.0.3版本的,下载下来测试变形视频,结果还是变形的。这是不是没法解决了。
    一度我也觉得没法解决,当然你也可以叫接口返回视频真实的分辨率,自己手动设置视频的宽高

我的发现

  • 为什么最新版8.0.0没问题,然后观看了ijk等底层的库有没有变,发现没变。证明6.0.3的ijk也是能获取真实的视频宽高的
  • 关键MeasureHelper的doMeasure算视频宽高方法内容变了,替换结果还是变形
  • 只能在log上看看,有什么发现没有,结果恍然大悟,底层获取视频宽高的库不一样。
    它demo正常的是用PlayerFactory.setPlayManager(IjkPlayerManager.class),而我项目设置的是PlayerFactory.setPlayManager(Exo2PlayerManager.class)

总的解决方案:

1、要用PlayerFactory.setPlayManager(IjkPlayerManager.class)
2、MeasureHelper的doMeasure要替换成最新版本的,如果没有的属性,相应删掉即可

还有问题,请评论或者私信我,我每天都看简书的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容