### uni.chooseVideo(OBJECT)
拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
若选择和上传非图像、视频文件,另行参考:[https://uniapp.dcloud.io/api/media/file](https://uniapp.dcloud.io/api/media/file)。
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|sourceType|Array<String>|否|album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']||
|extension|Array<String>|否|根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。|H5(HBuilder X2.9.9+)|
|compressed|Boolean|否|是否压缩所选的视频源文件,默认值为 true,需要压缩。|微信小程序、百度小程序、字节跳动小程序|
|maxDuration|Number|否|拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。|APP平台 1.9.7+(iOS支持,Android取决于ROM的拍照组件是否实现此功能,如果没实现此功能则忽略此属性。) 微信小程序、百度小程序|
|camera|String|否|'front'、'back',默认'back'|APP、微信小程序|
|success|Function|否|接口调用成功,返回视频文件的临时文件路径,详见返回参数说明。||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)| |
**success 返回参数说明**
|参数|类型|说明|平台差异说明说明|
|:-|:-|:-|:-|
|tempFilePath|String|选定视频的临时文件路径||
|tempFile|File|选定的视频文件|仅H5(2.6.15+)支持|
|duration|Number|选定视频的时间长度,单位为 s|APP 2.1.0+、H5、微信小程序|
|size|Number|选定视频的数据量大小|APP 2.1.0+、H5、微信小程序|
|height|Number|返回选定视频的高|APP 2.1.0+、H5、微信小程序|
|width|Number|返回选定视频的宽|APP 2.1.0+、H5、微信小程序|
|name|String|包含扩展名的文件名称|仅H5支持|
**注意:**
* app安卓端选择的视频最大只支持180MB,如需突破该限制请使用原生插件https://ext.dcloud.net.cn/search?q=%E6%96%87%E4%BB%B6%E9%80%89%E6%8B%A9
* 文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 [uni.saveFile](api/file/file?id=savefile),在应用下次启动时才能访问得到。
* camera 部分 Android 手机下由于系统 ROM 不支持无法生效,打开拍摄界面后可操作切换
* 可以通过用户授权API来判断用户是否给应用授予相册或摄像头的访问权限[https://uniapp.dcloud.io/api/other/authorize](https://uniapp.dcloud.io/api/other/authorize)
* App下如需进一步压缩视频大小,可以在插件市场搜索[视频压缩](http://ext.dcloud.net.cn/search?q=%E8%A7%86%E9%A2%91%E5%8E%8B%E7%BC%A9)插件
* 如需上传到cdn,可使用uniCloud.uploadFile API,uniCloud提供了免费cdn给开发者使用,详见[https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile](https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile)
* 选择视频大多为了上传,uni ui封装了更完善的[uni-file-picker组件](https://ext.dcloud.net.cn/plugin?id=4079),文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。
**示例**
```html
hello
```
```javascript
export default {
data() {
return {
src: ''
}
},
methods: {
test: function () {
var self = this;
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
success: function (res) {
self.src = res.tempFilePath;
}
});
}
}
}
```
### uni.chooseMedia(OBJECT)
拍摄或从手机相册中选择图片或视频。
若选择和上传非图像、视频文件,另行参考:[https://uniapp.dcloud.io/api/media/file](https://uniapp.dcloud.io/api/media/file)。
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|2.10.0+|x|x|x|x|x|
**OBJECT 参数说明**
|参数名|类型|默认值|必填|说明|
|:-|:-|:-|:-|:-|
|count|Number|9(注意:ios不可大于9)|否|最多可以选择的文件个数|
|mediaType|Array.<string>|['image', 'video']|否|文件类型|
|sourceType|Array.<string>|['album', 'camera']|否|图片和视频选择的来源|
|maxDuration|Number|10|否|拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 30s 之间|
|sizeType|Array.<string>|['original', 'compressed']|否|仅对 mediaType 为 image 时有效,是否压缩所选文件|
|camera|String|'back'|否|仅在 sourceType 为 camera 时生效,使用前置或后置摄像头|
|success|function||否|接口调用成功的回调函数|
|fail|function||否|接口调用失败的回调函数|
|complete|function||否|接口调用结束的回调函数(调用成功、失败都会执行)|
**OBJECT.mediaType 合法值**
|值|说明|
|:-|:-|
|image|只能拍摄图片或从相册选择图片|
|video|只能拍摄视频或从相册选择视频 |
**OBJECT.sourceType 合法值**
|值|说明|
|:-|:-|
|album|从相册选择|
|camera|使用相机拍摄 |
**OBJECT.camera 合法值**
|值|说明|
|:-|:-|
|back|使用后置摄像头|
|front|使用前置摄像头 |
**success 返回参数说明**
|参数名|类型|说明|
|:-|:-|:-|
|tempFiles|Array.<string>|本地临时文件列表|
|type|String|文件类型,有效值有 image 、video|
**res.tempFiles 的结构**
|参数名 |类型 |说明 |
|:- |:- |:- |
|tempFilePath |String |本地临时文件路径 (本地路径)|
|size |Number |本地临时文件大小,单位 B |
|duration |Number |视频的时间长度 |
|height |Number |视频的高度 |
|width |Number |视频的宽度 |
|thumbTempFilePath|String |视频缩略图临时文件路径 |
**示例**
```javascript
uni.chooseMedia({
count: 9,
mediaType: ['image','video'],
sourceType: ['album', 'camera'],
maxDuration: 30,
camera: 'back',
success(res) {
console.log(res.tempFilest)
}
})
```
**Tips**
* 如需上传到cdn,可使用uniCloud.uploadFile API,uniCloud提供了免费cdn给开发者使用,详见[https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile](https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile)
* 选择文件大多为了上传,uni ui封装了更完善的[uni-file-picker组件](https://ext.dcloud.net.cn/plugin?id=4079),文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。
* 经开发者提醒,微信小程序ios真机可以选择的文件个数不能大于9,详见帖子[https://ask.dcloud.net.cn/question/115561](https://ask.dcloud.net.cn/question/115561)
### uni.saveVideoToPhotosAlbum(OBJECT)
保存视频到系统相册。
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|filePath|String|是|视频文件路径,可以是临时文件路径也可以是永久文件路径|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明**
|参数名|类型|说明|
|:-|:-|:-|
|errMsg|String|调用结果|
**注意**
- 可以通过用户授权API来判断用户是否给应用授予相册写入权限[https://uniapp.dcloud.io/api/other/authorize](https://uniapp.dcloud.io/api/other/authorize)
**示例**
```html
hello
```
```javascript
export default {
data() {
return {
src: ''
}
},
methods: {
test: function () {
var self = this;
uni.chooseVideo({
count: 1,
sourceType: ['camera'],
success: function (res) {
self.src = res.tempFilePath;
uni.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success: function () {
console.log('save success');
}
});
}
});
}
}
}
```
### uni.getVideoInfo(OBJECT)
获取视频详细信息
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|3.1.10+|3.1.10+|2.11.0+|x|x|x|x|√|
**OBJECT 参数说明**
|属性 |类型 |默认值 |必填 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|src |string |- |是 |视频文件路径,可以是临时文件路径也可以是永久文件路径(不支持网络地址) |
|success |function |- |否 |接口调用成功的回调函数 |
|fail |function |- |否 |接口调用失败的回调函数 |
|complete |function |- |否 |接口调用结束的回调函数(调用成功、失败都会执行) |
**success 返回参数说明**
|参数名 |类型 |说明 |平台差异说明|
|:- |:- |:- ||
|orientation|string |画面方向 |微信小程序、App(3.1.14+)|
|type |string |视频格式 |微信小程序、App(3.1.14+)|
|duration |number |视频长度 |微信小程序、App(3.1.10+)、H5|
|size |number |视频大小,单位 kB |微信小程序、App(3.1.10+)、H5|
|height |number |视频的长,单位 px |微信小程序、App(3.1.10+)、H5|
|width |number |视频的宽,单位 px |微信小程序、App(3.1.10+)、H5|
|fps |number |视频帧率 |微信小程序、App(3.1.14+)|
|bitrate |number |视频码率,单位 kbps|微信小程序、App(3.1.14+)|
**res.orientation参数说明**
|值 |说明 |
|:- |:- |
|up |默认 |
|down |180度旋转 |
|left |逆时针旋转90度 |
|right |顺时针旋转90度 |
|up-mirrored |同up,但水平翻转 |
|down-mirrored |同down,但水平翻转 |
|left-mirrored |同left,但垂直翻转 |
|right-mirrored |同right,但垂直翻转 |
### uni.compressVideo(OBJECT)
压缩视频接口。开发者可指定压缩质量 quality 进行压缩。当需要更精细的控制时,可指定 bitrate、fps、和 resolution,当 quality 传入时,这三个参数将被忽略。原视频的相关信息可通过 getVideoInfo 获取。
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|3.1.10+|x|2.11.0+|x|x|x|x|x|
App端有很多插件支持视频压缩,详见[插件市场](https://ext.dcloud.net.cn/search?q=%E8%A7%86%E9%A2%91%E5%8E%8B%E7%BC%A9)
压缩完毕后如需上传到cdn,可使用uniCloud.uploadFile API,uniCloud提供了免费cdn给开发者使用,详见[https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile](https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile)
**OBJECT 参数说明**
|属性 |类型 |默认值 |必填 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|src |string | |是 |视频文件路径,可以是临时文件路径也可以是永久文件路径 |
|quality |string | |是 |压缩质量 |
|bitrate |number | |是 |码率,单位 kbps |
|fps |number | |是 |帧率 |
|resolution |number | |是 |相对于原视频的分辨率比例,取值范围(0, 1] |
|success |function | |否 |接口调用成功的回调函数 |
|fail |function | |否 |接口调用失败的回调函数 |
|complete |function | |否 |接口调用结束的回调函数(调用成功、失败都会执行) |
**quality可取值**
|值 |说明 |
|:- |:- |
|low |低 |
|medium |中 |
|high |高 |
**success 返回参数说明**
|参数名 |类型 |说明 |
|:- |:- |:- |
|tempFilePath |string |压缩后的临时文件地址 |
|size |string |压缩后的大小,单位 kB|
### uni.openVideoEditor(OBJECT)
打开视频编辑器
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|2.12.0+|x|x|x|x|x|
**OBJECT 参数说明**
|属性 |类型 |默认值 |必填 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|filePath |string |- |是 |视频源的路径,只支持本地路径 |
|success |function |- |否 |接口调用成功的回调函数 |
|fail |function |- |否 |接口调用失败的回调函数 |
|complete |function |- |否 |接口调用结束的回调函数(调用成功、失败都会执行) |
**success 返回参数说明**
|参数名 |类型 |说明 |
|:- |:- |:- |
|duration |number |剪辑后生成的视频文件的时长,单位毫秒(ms) |
|size |number |剪辑后生成的视频文件大小,单位字节数(byte) |
|tempFilePath |string |编辑后生成的视频文件的临时路径 |
|tempThumbPath|string |编辑后生成的缩略图文件的临时路径 |