showVideo
选择视频或录制视频,支持从相册选择或调用相机录制。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.chooseVideo | UniApp['chooseVideo'] | 选择视频 API |
deps.log | Console['log'] | 日志输出 |
deps.error | Console['error'] | 错误输出 |
deps.detectEnvironment | () => 'h5' | 'miniapp' | 'app' | 'unknown' | 检测环境函数(可选) |
环境要求
- UniApp环境: 使用UniApp API,支持小程序、H5、App端
函数签名
typescript
function showVideo(
options?: VideoOptions,
deps: ShowVideoDeps
): Promise<VideoResult>
interface ShowVideoDeps {
chooseVideo: UniApp['chooseVideo']
log: Console['log']
error: Console['error']
detectEnvironment?: () => 'h5' | 'miniapp' | 'app' | 'unknown'
}
interface VideoOptions {
sourceType?: ('album' | 'camera')[]
compressed?: boolean
maxDuration?: number
camera?: 'back' | 'front'
extraData?: Record<string, unknown>
}
interface VideoResult {
errMsg?: string
tempFilePath?: string
duration?: number
size?: number
width?: number
height?: number
raw?: unknown
}参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
options | VideoOptions | 否 | {} | 视频选择选项 |
options.sourceType | ('album' | 'camera')[] | 否 | ['album', 'camera'] | 视频来源类型 |
options.compressed | boolean | 否 | false | 是否压缩 |
options.maxDuration | number | 否 | - | 最大录制时长(秒) |
options.camera | 'back' | 'front' | 否 | - | 使用前置或后置摄像头 |
deps | ShowVideoDeps | 是 | - | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<VideoResult> | Promise,成功时返回视频选择结果,包含临时文件路径、时长、尺寸等信息 |
工作原理
- 环境检测:根据
detectEnvironment函数检测当前运行环境 - 平台适配:根据环境调用对应的适配器实现
- 小程序端:使用
uni.chooseVideo - H5端:使用
uni.chooseVideo(录制功能受限) - App端:使用
uni.chooseVideo
- 小程序端:使用
- 视频处理:统一处理返回的视频数据,包括路径、时长、大小、分辨率等信息
- 返回结果:返回标准化的视频选择结果
支持多平台统一接口,自动适配不同环境的实现差异。