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

相关推荐
金启攻13 分钟前
鸿蒙原生应用开发实战(二):ArkTS组件化构建首页——钓点列表与底部导航
harmonyos
浮芷.43 分钟前
鸿蒙 6.1 新特性-60fps流畅人物跳跃功能算法深度解析-鸿蒙PC端正弦值计算法
算法·华为·harmonyos·鸿蒙·鸿蒙系统
金启攻1 小时前
【鸿蒙原生应用开发实战】第五篇:收藏管理与个人中心 — 收尾两个关键页面的完整实现
华为·harmonyos
烛衔溟1 小时前
HarmonyOS 页面生命周期与组件生命周期
华为·harmonyos
金启攻1 小时前
【鸿蒙原生应用开发实战】第三篇:列表页与标签筛选功能 — 打造高效的天体列表
华为·harmonyos
烛衔溟1 小时前
HarmonyOS 工程目录、配置文件与 Stage 模型核心
华为·harmonyos
祭曦念1 小时前
【共创季稿事节】鸿蒙原生 ArkTS 布局:NavRouter + NavDestination 导航布局实战
ubuntu·华为·harmonyos
木咺吟11 小时前
鸿蒙原生应用实战(一):从零搭建快递追踪App——项目初始化与工程架构详解
华为·harmonyos
坚果派·白晓明14 小时前
【鸿蒙PC】SDL3 移植:AtomCode Skills 4 步速通多媒体库适配
c++·华为·ai编程·harmonyos·atomcode·c/c++三方库
风满城3315 小时前
鸿蒙原生应用实战(三):设置与统计页面开发 — 数据驱动的功能模块
harmonyos