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

【鸿蒙优选三方库】@ohos/ijkplayer:在鸿蒙上像 B 站一样流畅播视频> 想在鸿蒙应用里像抖音/B站那样流畅播视频?@ohos/ijkplayerB站 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/ijkplayermodule.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 应该是你清单上的第一选择

相关推荐
linux_cfan9 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
HMS Core9 小时前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos
梦想不只是梦与想9 小时前
鸿蒙 应用发布准备工作(一)
harmonyos·鸿蒙上架·鸿蒙应用发布
赛博仓鼠10 小时前
秋叶ComfyUI 3.2整合包实测:Python 3.13+Torch 2.13全栈升级,一键跑通MiniMax H3(附完整部署)
ai·ai作画·aigc·音视频
马剑威(威哥爱编程)11 小时前
【共创稿事节】HarmonyOS 7 文搜图实战:自然语言检索本地图片,全流程端侧闭环
华为·harmonyos
李游Leo11 小时前
HarmonyOS 7 HAR + HSP 工程化实战:模块复用、包体积控制与依赖边界
harmonyos
乐橙开放平台12 小时前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
昇腾知识体系12 小时前
鲲鹏+昇腾 NUMA 亲和性调优:Kunpeng 920 双路服务器给 NPU 工作负载绑核
人工智能·华为·知识图谱
用户5930960097814 小时前
Flutter 鸿蒙化实战:r_upgrade 适配 OpenHarmony,应用升级检查与弹窗
harmonyos
youyin14 小时前
HarmonyOS 鸿蒙 ArkTS/ArkUI 装饰器大全
华为·harmonyos