鸿蒙音视频播放器:libwlmedia

server/2025/2/11 2:49:40/

wlmedia_0">libwlmedia

跨平台播放器wlmedia现在已经支持了鸿蒙(Harmony)平台了,SDK插件地址:libwlmedia

一、接入SDK

1.1 导入SDK

ohpm i @ywl5320/libwlmedia

1.2 添加权限(可选)

如果需要播放网络视频,需要添加网络权限

#module.json5
"requestPermissions": [{"name": "ohos.permission.INTERNET"}
]

1.3 设置XComponentController

let wlPlayer: WlPlayer = new WlPlayer();
let wlComponentController: WlComponentController = new WlComponentController(this.wlPlayer);
...
XComponent({type: XComponentType.SURFACE,controller: this.wlComponentController}).width('100%').height('100%')
...

1.4 基础调用代码

@Entry
@Component
struct Index{private wlPlayer: WlPlayer | null = null;private wlComponentController: WlComponentController | null = null;aboutToAppear(): void {this.wlPlayer = new WlPlayer();this.wlPlayer.setOnMediaInfoListener({onPrepared: (): void => {// 异步准备好后回调,这里调用 wlplayer.start() 开始播放this.wlPlayer?.start();},onTimeInfo: (currentTime: number, bufferTime: number): void => {// 时间进度回调 },onComplete: (wlCompleteType: WlCompleteType, msg: string): void => {if (wlCompleteType == WlCompleteType.WL_COMPLETE_EOF) {// 正常播放完成} else if (wlCompleteType == WlCompleteType.WL_COMPLETE_ERROR) {// 播放出错,原因为:msg 字段} else if (wlCompleteType == WlCompleteType.WL_COMPLETE_HANDLE) {// 主动调用 wlPlayer.stop() 会回调此类型} else if (wlCompleteType == WlCompleteType.WL_COMPLETE_NEXT) {// 正在播放中,切换了新的数据源,会回调此类型} else if (wlCompleteType == WlCompleteType.WL_COMPLETE_TIMEOUT) {// 播放超时,会回调此接口} else if (wlCompleteType == WlCompleteType.WL_COMPLETE_LOOP) {// 循环播放中,每开始新的一次循环,会回调此接口}},onLoadInfo: (loadStatus: WlLoadStatus, progress: number, speed: number): void => {// 加载状态回调if (wlLoadStatus == WlLoadStatus.WL_LOADING_STATUS_START) {// 开始加载} else if (wlLoadStatus == WlLoadStatus.WL_LOADING_STATUS_PROGRESS) {// 加载进度} else if (wlLoadStatus == WlLoadStatus.WL_LOADING_STATUS_FINISH) {// 加载完成}},onFirstFrameRendered: (): void => {// seek 完成回调},onSeekFinish: (): void => {// seek 完成回调},onAudioInterrupt: (type: WlAudioInterruptType, hint: WlAudioInterruptHint) => {// 音频打断,和系统一致}this.wlComponentController = new WlComponentController(this.wlPlayer);this.wlPlayer.setClearLastVideoFrame(this.wlComponentController.getUniqueNum(), false);}// 退出 销毁资源onBackPress(): boolean | void {this.wlPlayer?.release()}build() {Column() {XComponent({type: XComponentType.SURFACE,controller: this.wlComponentController}).onLoad((event) => {// 加载完成后就开始播放this.wlPlayer?.setSource(this.filesDir + "/huoying_cut.mkv");this.wlPlayer?.prepare();}).width('100%').height('100%')}}
}

二、效果展示

HarmonyOS libwlmedia 演示视频

三、注意事项

  • 模拟器播放需要设置解码类型为soft,因为模拟器测试不支持硬解码。
this.wlPlayer.setCodecType(WlCodecType.WL_CODEC_SOFT)

四、更多功能

参考:harmonyos_api


http://www.ppmy.cn/server/166643.html

相关文章

蓝桥杯 Java 之输入输出

一、输入输出方式:Scanner vs BufferedReader Scanner类 简介:Scanner 是 Java 中一个非常方便的用于读取用户输入的类,它可以从多种输入源(如标准输入、文件等)读取基本数据类型和字符串。 1. Scanner的细节与使用…

pgBackRest 是专为 PostgreSQL 设计的开源备份与恢复工具,以其高性能、可靠性和灵活性著称

pgBackRest 是专为 PostgreSQL 设计的开源备份与恢复工具,以其高性能、可靠性和灵活性著称。它支持 全量备份、增量备份、并行备份/恢复 和 加密 等特性,适用于大规模数据库和关键业务场景。以下是其核心功能及操作指南: 一、pgBackRest 核心…

清影2.0(AI视频生成)技术浅析(一)

清影2.0是由某科技公司推出的一款先进的AI视频生成平台,旨在通过人工智能技术实现从文本到视频的自动化创作。该平台结合了自然语言处理(NLP)、计算机视觉(CV)、音频处理以及深度学习等多个领域的最新技术,能够根据用户输入的文本描述自动生成高质量的视频内容。 1.平台…

简述MySQL主从复制原理及其工作过程,配置一主两从并验证

主从原理:MySQL主从同步是一种数据库复制技术,它通过将主服务器上的数据进行更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并且在从服务器上执行这些日志的操…

Redis基础笔记

一、基础知识 连接方式 CLI (Command Line Interface)API (Application Programming Interface)GUI (Graphical User Interface) 启动 redis-server连接到Redis(Redis CLI Client) redis redis-cli telnet 127.0.0.1 6379退出 quit/exit查看过期时…

深入解析 Sojson.v7 混淆加密技术(对比 Sojson.v6)

一、引言 1. 什么是 Sojson? Sojson 是一种 JavaScript 代码混淆与加密工具主要用于代码保护,防止被轻易破解 2. Sojson 各个版本的演进 v4-v7 的发展历程: Sojson 从 v4 到 v7 版本不断进化,增加了更多的混淆和防调试技术。 …

【Elasticsearch】terms聚合

总结 术语聚合(terms aggregation)是 Elasticsearch 中一种非常强大的聚合方式,用于根据字段值对数据进行分组和统计。它支持多种参数和配置选项,能够满足复杂的查询需求。以下是术语聚合的主要功能和注意事项的总结:…

sqlite 查看表结构

在SQLite中,查看表结构通常有以下几种方法: 使用.schema命令 在SQLite的命令行界面中,你可以使用.schema命令加上表名来查看该表的结构。例如,如果你想查看名为your_table_name的表结构,你可以这样做: .s…