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的修改提交)

相关推荐
王码码20354 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
坚果派·白晓明4 小时前
在鸿蒙设备上快速验证由lycium工具快速交叉编译的C/C++三方库
c语言·c++·harmonyos·鸿蒙·编程语言·openharmony·三方库
lbb 小魔仙5 小时前
【HarmonyOS实战】OpenHarmony + RN:自定义 useFormik 表单处理
react native·harmonyos
果粒蹬i5 小时前
【HarmonyOS】DAY7:鸿蒙跨平台 Tab 开发问题与列表操作难点深度复盘
华为·harmonyos
王码码20355 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
ITUnicorn6 小时前
【HarmonyOS6】ArkTS 自定义组件封装实战:动画水杯组件
华为·harmonyos·arkts·鸿蒙·harmonyos6
全栈探索者6 小时前
@Component + struct = 你的新函数组件——React 开发者的鸿蒙入门指南(第 2 期)
react·harmonyos·arkts·前端开发·deveco studio·鸿蒙next·函数组件
廖松洋(Alina)7 小时前
【收尾以及复盘】flutter开发鸿蒙APP之成就徽章页面
flutter·华为·开源·harmonyos·鸿蒙
廖松洋(Alina)7 小时前
【收尾以及复盘】flutter开发鸿蒙APP之打卡日历页面
flutter·华为·开源·harmonyos·鸿蒙
廖松洋(Alina)7 小时前
【收尾以及复盘】flutter开发鸿蒙APP之本月数据统计页面
flutter·华为·开源·harmonyos·鸿蒙