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

相关推荐
搜狐技术产品小编20231 小时前
鸿蒙搜狐新闻如何在Native调用ArkTS方法
华为·harmonyos
迷曳7 小时前
21、鸿蒙Harmony Next开发:组件导航(Navigation)
前端·harmonyos·鸿蒙·navigation
腾讯云qcloud075510 小时前
腾讯位置商业授权鸿蒙地图SDK工程配置
华为·harmonyos
迷曳12 小时前
29、鸿蒙Harmony Next开发:深浅色适配和应用主题换肤
ui·华为·harmonyos·鸿蒙
迷曳12 小时前
30、鸿蒙Harmony Next开发:应用文件上传下载,压缩与解压
华为·harmonyos·文件处理
zhanshuo14 小时前
告别重复敲代码!教你玩转 DevEco Studio 的 Live Templates 代码片段库
harmonyos
娅娅梨1 天前
HarmonyOS-ArkUI Web控件基础铺垫4--TCP协议- 断联-四次挥手解析
网络协议·tcp/ip·http·okhttp·harmonyos·arkui·arkweb
zhanshuo2 天前
干掉复杂逻辑!手把手教你在鸿蒙系统中创建稳定的后台服务
harmonyos
zhanshuo2 天前
鸿蒙系统通知开发全攻略:实现跳转、自动消失、消息提醒的完整教程
harmonyos
问道飞鱼2 天前
【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现
android·ios·harmonyos·多webview互访