# uni.chooseVideo(options)

拍摄视频或从手机相册中选视频,返回视频的临时文件路径。

# chooseVideo 兼容性

Web Android iOS
4.0 4.18 4.18

# 参数

名称 类型 必填 默认值 兼容性 描述
options ChooseVideoOptions - - -
名称 类型 必备 默认值 兼容性 描述
pageOrientation string -
屏幕方向。默认为page.json中的pageOrientation。
合法值 兼容性 描述
auto - 自动
portrait - 竖屏显示
landscape - 横屏显示
albumMode string "custom"
视频选择模式
合法值 兼容性 描述
custom - 自定义媒体选择器
system - 系统媒体选择器
sourceType Array<string> - - album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
compressed boolean true
是否压缩所选的视频源文件,默认值为true,需要压缩
maxDuration number -
拍摄视频最长拍摄时间,单位秒。最长支持 60 秒
camera string -
摄像切换
合法值 兼容性 描述
front - 前置摄像头
back - 后置摄像头
extension Array<string> -
根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。
success (callback: ChooseVideoSuccess) => void - - 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明
fail (callback: IMediaError) => void - - 接口调用失败的回调函数
complete (callback: any) => void - - 接口调用结束的回调函数(调用成功、失败都会执行)

# ChooseVideoSuccess 的属性值

名称 类型 必备 默认值 兼容性 描述
tempFilePath string - - 选定视频的临时文件路径
duration number - - 选定视频的时间长度
size number - - 选定视频的数据量大小
height number - - 返回选定视频的长
width number - - 返回选定视频的宽

# IMediaError 的属性值

名称 类型 必备 默认值 兼容性 描述
errCode number - - 错误码
合法值 兼容性 描述
1101001 - 用户取消
1101002 - urls至少包含一张图片地址
1101003 - 文件不存在
1101004 - 图片加载失败
1101005 - 未获取权限
1101006 - 图片或视频保存失败
1101007 - 图片裁剪失败
1101008 - 拍照或录像失败
1101009 - 图片压缩失败
1101010 - 其他错误
errSubject string - - 统一错误主题(模块)名称
data any - - 错误信息中包含的数据
cause Error - - 源错误信息,可以包含多个错误,详见SourceError
errMsg string - - -

# 参见

# 示例

hello uni-app x

扫码体验(手机浏览器跳转到App直达页)

Template

Script

<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex:1">
  <!-- #endif -->
    <page-head :title="title"></page-head>
    <view class="uni-padding-wrap">
      <video class="video" :src="src" :controls="true"></video>
      <view class="uni-title">
        <text class="uni-subtitle-text">视频信息</text>
      </view>
      <text>{{videoInfo}}</text>
      <view class="uni-btn-v">
        <button type="primary" @click="chooseVideo">选取视频</button>
      </view>
      <enum-data title="视频来源" :items="sourceTypeItemTypes" @change="onSourceTypeChange"></enum-data>
      <!-- #ifdef APP -->
      <enum-data title="屏幕方向" :items="orientationTypeItemTypes" @change="onOrientationTypeChange"></enum-data>
      <!-- #endif -->
      <enum-data title="摄像头" :items="cameraItemTypes" @change="onCameraChange"></enum-data>
      <!-- #ifdef APP-ANDROID -->
      <enum-data title="相册模式" :items="albumModeTypes" @change="onAlbumModeChange"></enum-data>
      <!-- #endif -->
    </view>
    <input-data title="最长拍摄时间,单位秒" defaultValue="60" type="number" @confirm="onMaxDurationConfirm"></input-data>
    <!-- #ifdef APP -->
    <view class="uni-padding-wrap">
      <boolean-data title="是否压缩" :defaultValue="true" @change="onCompressedChange"></boolean-data>
    </view>
    <!-- #endif -->
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>



<style>
  .video {
    align-self: center;
    width: 300px;
    height: 225px;
  }
</style>

# 通用类型

# GeneralCallbackResult

名称 类型 必备 默认值 兼容性 描述
errMsg string - - 错误信息

# Tips

  • 本API会自动申请摄像头和相册权限,如需手动获取app是否拥有摄像头和相册权限,参考 uni.getAppAuthorizeSetting
  • app端拍摄和相册选择会在应用沙盒目录的cache目录产生临时文件,位置详见
  • app端如需主动删除临时文件,使用uni.getFileSystemManager
  • albumModesystem属性打开的是系统的视频选择器;custom属性打开的是uni-app x提供的视频选择器。
  • 当设置albumModesystem时,可以正常上架google play。同时需要在manifest.json中将<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />权限移除。配置方式参考移除Android权限.
  • 系统视频选择器的sizeType仅支持设置['original']['compressed']。在Android 11及以上的系统中,设置system调用的是系统的视频选择器,低于android 11的系统中会调用系统的文件选择器。
  • 由于受google play 照片和视频权限政策的影响,使用uni.chooseVideo在上架google play时需要提交一份声明以获得试用的资格,谷歌允许延长声明的提交时间到2025年1月22日。遇到此问题可以使用插件uni-chooseSystemMedia