ohos_ijkplayer库mate30手机播放有声音无画面问题

ohos_ijkplayer库是ijkplayer库的鸿蒙版本,当编译通过并运行到mate30系列手机上后,播放视频会发现能听到有声音但是无画面的问题。本文主要来分析一下这个问题,并尝试解决。

一、问题现象

如下页面,运行到mate30系列手机上,点击播放后,能听到声音但是没有画面:

二、分析问题

抱着尝试的态度,去到库的地址上的Issues中去查找是否有类似的问题,发现也有人反馈mate30以及xs2等手机有类似的现象,但是还没有解决。再往前翻看,看到还有个mate60系列类似现象的问题,但是显示已解决。

追踪这个问题的解决,主要在210607b08d735223039680cdcc9036e9962eb303这个commit中解决问题的。其解决的问题主要是"兼容性问题:将window的format设置为与参数config的format一致",如下:

其修改的地方主要是在ijkplayer/src/main/cpp/ijksdl/ijksdl_egl.c文件中,在调用OH_NativeWindow_NativeWindowHandleOpt之前,先将format设置为配置中的format格式,避免不一致造成的兼容性问题。

三、尝试解决

按道理,上述的解决,是为了解决新系列手机的兼容性问题。但是这个修改可能解决了新系列手机的问题,却把旧的系列的手机改出了问题。

因此抱着尝试的方式,将这个修改的核心地方回退试一下,如下:

主要是在ijkplayer/src/main/cpp/ijksdl/ijksdl_egl.c文件中,屏蔽新增的配置format参数的代码:

屏蔽这个后,运行到mate30pro手机上,发现确实可以播放了:

四、结论

因此可以大致推测,是后面解决mate60播放有声音无画面问题,修改的兼容性问题导致了旧的系列手机不兼容了。可以先按照上述方法屏蔽这段代码可以在旧的系列手机上正常播放。

结论:

1、mate60系列新手机:可正常播放;

2、mate30系列等旧手机:临时措施可以先按照上述思路屏蔽相关代码即可。

TODO:

当然如果要新旧系列手机都兼容的话,可能还需要后续再研究修改兼容新旧系列手机问题。

我已将上述所说的修改,放到了我自己的仓库上,可供参考:

gitee.com/weekend45/o...

(PS:验证可运行到mate30系列手机,mate60系列可能需要回退5d8e6ab2ca0dcb953358d3d0446200c2332e3bd9这个commit的修改提交)

相关推荐
GY-931 小时前
HarmonyOS - UIObserver(无感监听)
harmonyos
哼唧唧_1 小时前
新闻类鸿蒙应用全链路运维指南:高并发场景下的稳定保障
harmonyos·新闻·harmony os5·鸿蒙运维
zacksleo4 小时前
哪些鸿蒙原生应用在使用Flutter
前端·flutter·harmonyos
二流小码农4 小时前
鸿蒙开发:简单实现一个服务卡片
harmonyos
移动端开发者5 小时前
鸿蒙Next数据面板组件DataPanel介绍
harmonyos
移动端开发者5 小时前
鸿蒙Next使用Canvas绘制一个汽车仪表盘
harmonyos
移动端开发者5 小时前
鸿蒙Next数据量环形图标Gauge介绍
harmonyos
塞尔维亚大汉5 小时前
鸿蒙开发面试真题:鸿蒙操作系统的微内核架构有哪些优势?
面试·harmonyos
我睡醒再说6 小时前
纯血Harmony NETX 5小游戏实践:2048(附源文件)
游戏·华为·harmonyos·arkts
程序员小刘7 小时前
基于uni-app for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
华为·uni-app·harmonyos