更新记录

1.0.0(2026-09-03)

  • 初始化项目框架
  • 支持 MP4/H265/FLV/HLS 多格式播放
  • 支持 RTMP/HTTP-FLV/HLS 直播拉流
  • H265 硬件解码(自动检测 + 软解回退)
  • 直播自动重连(指数退避策略)
  • 全屏/退出全屏
  • 音量、亮度、倍速控制
  • 画面适配模式(fit/fill/crop)
  • 截图功能
  • Android/iOS/HarmonyOS 三端兼容

平台兼容性

uni-app x(5.0)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 6.0 16 -

d-video-player

uni-app x UTS 原生视频播放器插件

支持 H265 硬解、FLV/HLS/RTMP 直播拉流,提供完整的播放器 API,兼容 Android/iOS/HarmonyOS 三端。

特性

  • MP4、H265、FLV、HLS 多格式支持
  • 直播拉流:RTMP、HTTP-FLV、HLS
  • H265 硬件解码(自动检测,软解回退)
  • 自动重连(指数退避策略)
  • 全屏/退出全屏
  • 音量/亮度控制
  • 倍速播放(0.25x-4.0x)
  • 画面适配(fit/fill/crop)
  • 截图(base64)
  • 直播流切换到

安装

// manifest.json
{
  "uni_modules": {
    "d-video-player": {
      "version": "1.0.0"
    }
  }
}

快速开始

import { VideoPlayer } from '@/uni_modules/d-video-player'

const player = new VideoPlayer()

// 初始化
player.create({ width: 300, height: 200 })

// 加载点播
player.setSource({ url: 'https://example.com/video.mp4', type: 'auto' })
player.play()

// 加载直播
player.playLive({
  url: 'https://example.com/live.flv',
  protocol: 'auto',
  bufferDuration: 2000,
  reconnect: true,
  reconnectDelay: 3000,
  reconnectCount: 5
})

API

初始化

方法 说明
create(options) 创建播放器实例
destroy() 销毁播放器

源配置

interface VideoSource {
  url: string
  type?: 'flv' | 'hls' | 'mp4' | 'rtmp' | 'auto'
  headers?: Record<string, string>
  startTime?: number
}

interface LiveSource {
  url: string
  protocol?: 'rtmp' | 'flv' | 'hls' | 'auto'
  headers?: Record<string, string>
  bufferDuration?: number        // 默认 2000ms
  minBufferDuration?: number     // 最小缓冲
  reconnect?: boolean             // 自动重连
  reconnectDelay?: number         // 重连间隔,默认 3000ms
  reconnectCount?: number         // 最大重连次数,默认 5
}

interface PlaybackConfig {
  autoplay?: boolean
  loop?: boolean
  muted?: boolean
  volume?: number
  playbackRate?: number
  isLive?: boolean
  enableH265?: boolean
  enableCache?: boolean
}

播放控制

方法 说明
setSource(source) 设置点播源
setConfig(config) 设置播放配置
play() 开始播放
pause() 暂停播放
stop() 停止播放
seekTo(position) 跳转到指定位置(ms)
resume() 恢复播放
playLive(source) 开始直播
stopLive() 停止直播
switchStream(url) 切换直播流
pauseLive() 暂停直播渲染
resumeLive() 恢复直播渲染

状态查询

方法 返回
getPlayState() idle/loding/playing/paused/buffering/completed/error
getLiveState() idle/connecting/connected/buffering/live/reconnecting/error
getCurrentPosition() 当前播放位置(ms)
getDuration() 总时长(ms)
getVolume() 音量 0-1
getPlaybackRate() 当前倍速
getStreamInfo() 流信息
getCurrentBitrate() 当前码率(bps)
isPlaying() 是否正在播放
isFullscreen() 是否全屏

音视频控制

方法 说明
setVolume(0-1) 设置音量
setMute(bool) 设置静音
setPlaybackRate(rate) 设置倍速
setMirror(bool) 设置镜像

画面控制

方法 说明
setAspectRatio('fit/fill/crop') 画面适配模式
setBrightness(0-1) 设置屏幕亮度
takeSnapshot() 截图,返回 base64

全屏

方法 说明
enterFullscreen() 进入全屏
exitFullscreen() 退出全屏

事件

事件 回调参数 说明
onPlayStateChange (state: string) 播放状态变化
onProgress (current: number, duration: number) 播放进度
onError (errCode: number, errMsg: string) 错误回调
onLiveStateChange (state: string) 直播状态变化
onFirstFrame () 首帧渲染
onSeekComplete () Seek 完成
onH265Fallback () H265 硬解回退
onReconnectAttempt (attempt: number, max: number) 重连尝试
onFullscreenChange (isFullscreen: boolean) 全屏状态变化
onBuffering (percent: number) 缓冲进度

错误码

错误码 说明
9020001 播放器初始化失败
9020002 源地址解析失败
9020003 H265 硬解不可用
9020004 FLV 解封装失败
9020005 网络连接失败
9020006 播放超时
9020007 渲染器创建失败
9020008 不支持的操作
9020009 缓存写入失败
9020010 权限不足
9020011 直播连接失败
9020012 直播流格式不支持
9020013 直播重连耗尽
9020014 直播超时
9020015 直播已停止

各平台限制

特性 Android iOS HarmonyOS
MP4
H265 ✅ 硬解+软解回退 ✅ VideoToolbox ✅ 系统解码器
FLV ✅ 自定义解封装 ✅ AVPlayer/DisplayLayer ✅ HTTP 拉流
HLS ✅ ExoPlayer ✅ AVPlayer ✅ AVPlayer
RTMP ✅ 自定义拉流 ✅ FFmpeg ⚠️ 需 FFmpeg 桥接
全屏
截图 ⚠️ 有限支持

许可证

MIT

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。