鸿蒙版ijkplayer播放器示例工程适配运行

目前移动端比较主流的播放器库,开源项目ijkplayer播放器算是数一数二的。bilibili官方的ijkplayer项目,之前是只有安卓版和IOS版的,那么现在鸿蒙系统是否有ijkplayer库呢?

从华为的官方推荐的开源三方库资源汇总和OpenHarmony三方库中心仓中搜索ijkplayer,可以发现它们都指向了同一个开源库,这个库正在大佬们将bilibili的ijkplayer移植到openHarmony系统环境下的。下面我们介绍一下,并使用运行到手机上看看。

一、简介

1、gitee地址:gitee.com/openharmony...

2、这是一个经过移植后,在OpenHarmony环境下可用的ijkplayer播放器

这个库是可以使用的,但是里面配套的demo工程,是基于OpenHarmony设备搭建的,没法直接编译运行到手机上。因此本篇文章主要介绍下载这个示例工程后,运行到手机上。

二、开发环境和配置调整

1、DevEco Studio版本

开发工具版本试过使用3.1版本貌似编译不过,而且它的库介绍里也是基于4.0和4.1版本的,因此建议最好使用是4.0及以上的。

我使用的是DevEco Studio 4.0 Beta版本,可供参考:

点击跳转到DevEco Studio 4.0 Beta版本下载地址

2、将运行环境openHarmony调整为Harmony

(1)、修改最外层build-profile.json5

将这个文件下的"runtimeOS"去掉,然后将compileSdkVersion和compatibleSdkVersion挪到products外,与products同级,并且compileSdkVersion和compatibleSdkVersion均改为9。如下修改改动:

修改后如下代码:

json 复制代码
"app": {  
    "compileSdkVersion": 9,  
    "compatibleSdkVersion": 9,  
    "products": [    
    {      "name": "default",      
            "signingConfig": "default",    
    }  
    ],.....

(2)、修改entry/build-profile.json5

将(1)中的runtimeOS放到这个文件下,并修改为HarmonyOS,如下改动:

修改后代码如下:

arduino 复制代码
{  
    "apiType": 'stageMode',  
    "buildOption": {  },  
    "targets": [    
        {      
            "name": "default",      
            "runtimeOS": "HarmonyOS"    
        },    
        {   
            "name": "ohosTest",    
        }  
    ]
}

(3)、修改module.json5

因为要运行到手机上,需要module.json5的deviceTypes中加上手机类型phone,或者直接改为phone,一共有3处module.json5。

分别在entry/build-profile.json5、entry/src/main/module.json5和entry/src/ohosTest/module.json5:

三、编译错误调整

上述配置相关调整完成后,开始编译,编译后会报错误。

从代码中,看到,@ohos.base是属于openHarmoy的API10中才有的,因此需要做一下调整。在代码中,主要是如下的使用:

typescript 复制代码
import { BusinessError } from '@ohos.base';
......
setScreenOnWhilePlaying(on: boolean): void {  
    window.getLastWindow(getContext(this), (err: BusinessError, data: window.Window) => {    
        data.setWindowKeepScreenOn(on);  
    });
}

其实可以看到变量err没有使用到,而Harmony的API9的getLastWindow函数的参数其实是BaseContext,因此可以改成如下这样:

到此,可以编译通过。

四、运行到手机上

编译通过后,运行到手机上,如下页面:

点击下面的播放列表,可以直接在当前页面播放,或者点击上方的测试地址文字区域,会跳转到播放页面,如下图,会有更多的一些操作,暂停,倍速等:

目前默认的测试播放地址是devimages.apple.com.edgekey.net/streaming/e...

五、兼容性问题

上面的运行和播放,当前gitee上的代码目前运行在mate60系列上的话,是可以正常播放的。但是mate30系列,xs2等手机播放的时候会有能听到声音但是视频黑屏的现象。

这个是问题具体在我的另一篇文章中会具体分析和临时解决:

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

我已将上述所说的修改,包括mate30系列问题的修改,并修改了点界面,更直接明了。放到了我自己的仓库上,可供参考:

gitee.com/weekend45/o...

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

相关推荐
Lanren的编程日记14 分钟前
Flutter 鸿蒙应用内存管理优化实战:对象池+智能缓存+泄漏检测,全方位提升应用稳定性
flutter·缓存·华为·harmonyos
想你依然心痛25 分钟前
HarmonyOS 6(API 23)游戏开发实战:基于 Face AR & Body AR 的“律动星途“体感音游
华为·ar·harmonyos·body·face·悬浮导航·沉浸光感
liulian091641 分钟前
【Flutter for OpenHarmony 第三方库】Flutter for OpenHarmony 实时聊天功能适配与实现指南
flutter·华为·学习方法·harmonyos
Lanren的编程日记1 小时前
Flutter 鸿蒙应用多设备同步功能实战:完整同步协议+冲突解决机制,打造跨设备一致体验
flutter·华为·harmonyos
想你依然心痛1 小时前
HarmonyOS 6(API 23)实战:基于 Face AR 专注度检测与 Body AR 手势互动的“智能互动课堂“教师授课系统
华为·ar·harmonyos·悬浮导航·沉浸光感·face ar·body ar
小成Coder1 小时前
【Jack实战】如何用 UserAuthenticationKit 给 HarmonyOS 应用加一道本地身份验证
华为·harmonyos
UnicornDev1 小时前
【HarmonyOS 6】设置页面 UI 设计
ui·华为·harmonyos·arkts·鸿蒙
Hello__777716 小时前
开源鸿蒙 Flutter 实战|消息通知功能完整实现
flutter·开源·harmonyos
敲代码的鱼哇17 小时前
发送短信/拨打电话/获取联系人能力 UTS 插件(cz-sms)
android·前端·ios·uni-app·安卓·harmonyos·鸿蒙
Hello__777717 小时前
开源鸿蒙 Flutter 实战|仓库评论与点赞功能完整实现
flutter·开源·harmonyos