【鸿蒙优选三方库】@ohos/ijkplayer:在鸿蒙上像 B 站一样流畅播视频

【鸿蒙优选三方库】@ohos/ijkplayer:在鸿蒙上像 B 站一样流畅播视频> 想在鸿蒙应用里像抖音/B站那样流畅播视频?@ohos/ijkplayer 是 B站 ijkplayer 在 OpenHarmony 上的官方移植------基于 FFmpeg 内核,封装出 ArkTS 友好的播放器 API,支持视频/音频播放、倍速、硬解码、录制、截图,以及 HLS/RTSP/RTMP 直播流。- 包名 :@ohos/ijkplayer- 当前版本 :v2.0.10-rc.0- 协议 :LGPLv2.1 or later- 安装 :ohpm install @ohos/ijkplayer- 仓库 :https://gitcode.com/CPF-ApplicationTPC/ohos_ijkplayer---## 一、它解决了什么问题?在 HarmonyOS 上做视频播放,常见痛点:- 系统 AVPlayer 对某些编码/封装格式支持不全,特别是直播流(RTSP/RTMP)、冷门编码;- 想精细控制倍速、缓冲策略、硬解码、滤镜,要么做不到,要么得自己造轮子;- 想边播边录/截图,没有现成方案。ijkplayer 是 B 站开源的、基于 FFmpeg 的播放器,久经海量直播/点播业务考验。@ohos/ijkplayer 把它移植到 OpenHarmony,ArkTS 一行初始化,开箱即播 。---## 二、核心特点| 特性 | 说明 ||------|------|| 基于 FFmpeg 内核 | 解码能力覆盖 H.264/H.265/AV1 等主流编码 || 多格式支持 | MP4 / MKV / FLV / MOV / TS 等点播;HLS / RTSP / RTMP 等直播 || 软解 + 硬解 | 自动选择硬解码器,10bit 视频需 API 22+ || 倍速播放 | 0.5x ~ 2x+ 无级变速 || 音频播放 | 支持纯音频模式(无需 XComponent) || 视频录制 | 边播边录,保存到相册 || 截屏 | 一帧画面抓取 || Surface 渲染 | 通过 XComponent 接入 ArkUI 渲染管线 || 音量控制 | API 12+ 支持音量调节 || 音频中断监听 | API 22+ 支持系统音频焦点变化 |---## 三、适用场景- 短视频 / 中视频应用 :点播、滑动切换、倍速观看。- 直播应用 :RTSP/RTMP/HLS 拉流,低延迟播放。- 在线教育 :课件视频播放,支持倍速与进度记忆。- 音视频通话外延 :本地音视频文件的播放与录制。- 车载 / 工业终端 :在受限环境下仍能稳定播放多种格式。- 需要硬解码的高清场景 :4K / HDR / 高码率视频。---## 四、快速上手### 1. 安装与权限bashohpm install @ohos/ijkplayer在 module.json5 中声明:json"requestPermissions": [ { "name": "ohos.permission.INTERNET", "reason": "$string:NET_REQUEST_PERMISSION" }, { "name": "ohos.permission.WRITE_IMAGEVIDEO", "reason": "$string:IMAGEVIDEO_REQUEST_PERMISSION", "usedScene": { "when": "always" } }]### 2. 在页面里集成 XComponent 与播放器typescriptimport { IjkMediaPlayer, OnPreparedListener, OnErrorListener } from '@ohos/ijkplayer'@Entry@Componentstruct VideoPage { @State aspRatio: number = 16 / 9 private mIjkMediaPlayer = IjkMediaPlayer.getInstance() private videoUrl: string = 'https://example.com/sample.mp4' build() { Stack({ alignContent: Alignment.Center }) { // XComponent 作为视频渲染的"画布" XComponent({ id: 'player-surface', type: 'SURFACE', libraryname: 'ijkplayer_napi', controller: this.mIjkMediaPlayer.getSurfaceController() }) .onLoad(() => { this.preparePlayer() }) .aspectRatio(this.aspRatio) } .width('100%').height('100%') } private preparePlayer() { this.mIjkMediaPlayer.setOnPreparedListener(() => { this.mIjkMediaPlayer.start() // 准备完成,开始播放 }) this.mIjkMediaPlayer.setOnErrorListener((what, extra) => { console.error(`播放错误 what=${what} extra=${extra}`) }) this.mIjkMediaPlayer.setDataSource(this.videoUrl) this.mIjkMediaPlayer.prepareAsync() }}### 3. 常用控制typescript// 暂停 / 继续 / 跳转this.mIjkMediaPlayer.pause()this.mIjkMediaPlayer.start()this.mIjkMediaPlayer.seekTo(30_000) // 跳转到 30 秒// 设置倍速(API 12+)this.mIjkMediaPlayer.setSpeed(1.5)// 设置音量(API 12+)this.mIjkMediaPlayer.setVolume(0.8)// 截图this.mIjkMediaPlayer.capture(async (path) => { console.info('截图已保存: ' + path)})---## 五、亮点能力速览- 直播流覆盖 :HLS / RTSP / RTMP 拉流直接可用,无需额外解码器。- 纯音频播放 :不需要 XComponent 也能播音频,节省渲染资源。- 硬解码自动启用 :在支持的设备上自动走硬解,省电且降低发热。- 细粒度状态回调 :OnPreparedListener / OnErrorListener / OnCompletionListener 等,UI 同步不愁。- FFmpeg 内核 :编码/格式兼容性天花板级别,几乎无惧冷门媒体。---## 六、为什么值得选它?1. 久经考验 :ijkplayer 已在 B 站亿级 DAU 产品中打磨多年。2. 格式全 :直播流、冷门编码,FFmpeg 内核给你最大覆盖。3. ArkTS 友好 :API 设计贴合 HarmonyOS 开发习惯,XComponent 集成自然。4. 可深可浅 :基本播放在线就能跑,进阶控制(倍速/截屏/录制)一应俱全。5. 持续演进 :版本持续迭代,跟随 OpenHarmony 新 API 升级(如音频中断、10bit 硬解等)。如果你的应用要"播视频",尤其是涉及直播或非主流编码,@ohos/ijkplayer 应该是你清单上的第一选择。

相关推荐
程序猿追10 小时前
一次右尾概率实验:statrs4cj 的 CJMP 鸿蒙接入与双端实测
华为·harmonyos
大雷神12 小时前
从一道24点到同屏双人派对:用鸿蒙开发助手起步,复用已有App开发手机元服务
华为·智能手机·harmonyos
song50112 小时前
React Native for OpenHarmony 实战:三方库 react-native-parallax-scroll-view 的鸿蒙化适配指南
分布式·react native·react.js·transformer·harmonyos
贾伟康12 小时前
HarmonyOS ArkUI 日历范围选择不歧义:本地日期键、闭区间与闰日校验
harmonyos·状态机·arkui·闰年·日期范围
song50114 小时前
React Native for OpenHarmony 实战:三方库 react-native-ratings 的鸿蒙化适配指南
javascript·react native·react.js·分类·harmonyos
小猴子爱上树14 小时前
跨境电商AI图片翻译工具:批量图片翻译、视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
垆边人似月.14 小时前
华为机试题 :最大数
c++·算法·华为
大雷神15 小时前
用鸿蒙开发助手推进《3D种植》鸿蒙版与 Flame 库适配
3d·华为·harmonyos
轻口味15 小时前
HarmonyOS 7 新特性7:闪控窗深潜——六态流转、错误码二维查表与730ms双通道滞后真机实测
华为·harmonyos·鸿蒙·floatview
程序猿追15 小时前
从 24 到 25 字节:compactstr4cj 的 CJMP 鸿蒙适配与 UTF-8 实测
华为·harmonyos