uni-app【多媒体API】

success 返回参数说明

| 参数 | 类型 | 说明 |

| :-- | :-- | :-- |

| tempFilePaths | Array | 图片的本地文件路径列表 |

| tempFiles | Array、Array | 图片的本地文件列表,每一项是一个 File 对象 |

File 对象结构如下

| 参数 | 类型 | 说明 |

| :-- | :-- | :-- |

| path | String | 本地文件路径 |

| size | Number | 本地文件大小,单位:B |

| name | String | 包含扩展名的文件名称,仅H5支持 |

| type | String | 文件类型,仅H5支持 |

示例

uni.chooseImage({

count: 6, //默认9

sizeType: [‘original’, ‘compressed’], //可以指定是原图还是压缩图,默认二者都有

sourceType: [‘album’], //从相册选择

success: function (res) {

console.log(JSON.stringify(res.tempFilePaths));

}

});

uni.previewImage(OBJECT) @unipreviewimageobject

预览图片。

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- |

| current | String/Number | 详见下方说明 | 详见下方说明 | |

| urls | Array | 是 | 需要预览的图片链接列表 | |

| indicator | String | 否 | 图片指示器样式,可取值:“default” - 底部圆点指示器; “number” - 顶部数字指示器; “none” - 不显示指示器。 | App |

| loop | Boolean | 否 | 是否可循环预览,默认值为 false | App |

| longPressActions | Object | 否 | 长按图片显示操作菜单,如不填默认为保存相册 | App 1.9.5+ |

| success | Function | 否 | 接口调用成功的回调函数 | |

| fail | Function | 否 | 接口调用失败的回调函数 | |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |   |

current 参数说明

1.9.5+ 支持传图片在 urls 中的索引值

current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。App平台在 1.9.5至1.9.8之间,current为必填。不填会报错

注意,当 urls 中有重复的图片链接时:

  • 传链接,预览结果始终显示该链接在 urls 中第一次出现的位置。

  • 传索引值,在微信/百度/字节跳动小程序平台,会过滤掉传入的 urls 中该索引值之前与其对应图片链接重复的值。其它平台会保留原始的 urls 不会做去重处理。

举例说明:

一组图片 [A, B1, C, B2, D],其中 B1 与 B2 的图片链接是一样的。

  • 传 B2 的链接,预览的结果是 B1,前一张是 A,下一张是 C。

  • 传 B2 的索引值 3,预览的结果是 B2,前一张是 C,下一张是 D。此时在微信/百度/字节跳动小程序平台,最终传入的 urls 是 [A, C, B2, D],过滤掉了与 B2 重复的 B1。

longPressActions 参数说明

| 参数 | 类型 | 必填 | 说明 |

| :-- | :-- | :-- | :-- |

| itemList | Array | 是 | 按钮的文字数组 |

| itemColor | String | 否 | 按钮的文字颜色,字符串格式,默认为"#000000" |

| success | Function | 否 | 接口调用成功的回调函数,详见返回参数说明 |

| fail | Function | 否 | 接口调用失败的回调函数 |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |

success 返回参数说明

| 参数 | 类型 | 说明 |

| :-- | :-- | :-- |

| index | Number | 用户长按图片的索引值 |

| tapIndex | Number | 用户点击按钮列表的索引值 |

示例

// 从相册选择6张图

uni.chooseImage({

count: 6,

sizeType: [‘original’, ‘compressed’],

sourceType: [‘album’],

success: function(res) {

// 预览图片

uni.previewImage({

urls: res.tempFilePaths,

longPressActions: {

itemList: [‘发送给朋友’, ‘保存图片’, ‘收藏’],

success: function(data) {

console.log(‘选中了第’ + (data.tapIndex + 1) + ‘个按钮,第’ + (data.index + 1) + ‘张图片’);

},

fail: function(err) {

console.log(err.errMsg);

}

}

});

}

});

TIPS

  • 在非H5端,previewImage是原生实现的,界面自定义灵活度较低。

  • 插件市场有前端实现的previewImage,性能低于原生实现,但界面可随意定义;插件市场也有适于App端的previewImage原生插件,提供了更多功能。

uni.closePreviewImage(OBJECT)

关闭预览图片。

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序 | 飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ (3.2.15+) | √ (3.2.15+) | x | x | x | x | x | x | x |

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 |

| :-- | :-- | :-- | :-- |

| success | Function | 否 | 接口调用成功的回调函数 |

| fail | Function | 否 | 接口调用失败的回调函数 |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |

uni.getImageInfo(OBJECT)

获取图片信息。

小程序下获取网络图片信息需先配置download域名白名单才能生效。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | √ | √ | √ | √ | √ | √ | √ |

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 |

| :-- | :-- | :-- | :-- |

| src | String | 是 | 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径 |

| success | Function | 否 | 接口调用成功的回调函数 |

| fail | Function | 否 | 接口调用失败的回调函数 |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |

success 返回参数说明

| 参数名 | 类型 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- |

| width | Number | 图片宽度,单位px | |

| height | Number | 图片高度,单位px | |

| path | String | 返回图片的本地路径 | |

| orientation | String | 返回图片的方向,有效值见下表 | App、小程序 |

| type | String | 返回图片的格式 | App、小程序 |

orientation 参数说明

| 枚举值 | 说明 |

| :-- | :-- |

| up | 默认 |

| down | 180度旋转 |

| left | 逆时针旋转90度 |

| right | 顺时针旋转90度 |

| up-mirrored | 同up,但水平翻转 |

| down-mirrored | 同down,但水平翻转 |

| left-mirrored | 同left,但垂直翻转 |

| right-mirrored | 同right,但垂直翻转 |

示例

uni.chooseImage({

count: 1,

sourceType: [‘album’],

success: function (res) {

uni.getImageInfo({

src: res.tempFilePaths[0],

success: function (image) {

console.log(image.width);

console.log(image.height);

}

});

}

});

uni.saveImageToPhotosAlbum(OBJECT)

保存图片到系统相册。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | x | √ | √ | √ | √ | √ | √ |

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 |

| :-- | :-- | :-- | :-- |

| filePath | String | 是 | 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 |

| success | Function | 否 | 接口调用成功的回调函数 |

| fail | Function | 否 | 接口调用失败的回调函数 |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |

success 返回参数说明

| 参数名 | 类型 | 说明 |

| :-- | :-- | :-- |

| path | String | 保存到相册的图片路径,仅 App 3.0.5+ 支持 |

| errMsg | String | 调用结果 |

注意

  • 可以通过用户授权API来判断用户是否给应用授予相册的访问权限https://uniapp.dcloud.io/api/other/authorize

  • H5没有API可触发保存到相册行为,下载图片时浏览器会询问图片存放地址。

示例代码:

uni.chooseImage({

count: 1,

sourceType: [‘camera’],

success: function (res) {

uni.saveImageToPhotosAlbum({

filePath: res.tempFilePaths[0],

success: function () {

console.log(‘save success’);

}

});

}

});

uni.compressImage(OBJECT)

压缩图片接口,可选压缩质量

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | x | √ | √ | √(基础库版本>=3.110.3) | √ | √ | √ |

OBJECT 参数说明

| 属性 | 类型 | 默认值 | 必填 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- | :-- |

| src | String | | 是 | 图片路径,图片的路径,可以是相对路径、临时文件路径、存储文件路径 | |

| quality | Number | 80 | 否 | 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效) | |

| width | String | auto | 否 | 缩放图片的宽度,支持像素值(如"100px")、百分比(如"50%“)、自动计算(如"auto”,即根据width与源图宽的缩放比例计算,若未设置width则使用源图宽度) | App 3.0.0+ |

| height | String | auto | 否 | 缩放图片的高度,支持像素值(如"100px")、百分比(如"50%“)、自动计算(如"auto”,即根据height与源图高的缩放比例计算,若未设置height则使用源图高度) | App 3.0.0+ |

| rotate | Number | 0 | 否 | 旋转度数,范围0~360 | App 3.0.0+ |

| success | Function | | 否 | 接口调用成功的回调函数 | |

| fail | Function | | 否 | 接口调用失败的回调函数 | |

| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | |

success 返回参数说明

| 属性 | 类型 | 说明 |

| :-- | :-- | :-- |

| tempFilePath | String | 压缩后图片的临时文件路径 |

示例代码:

uni.compressImage({

src: ‘/static/logo.jpg’,

quality: 80,

success: res => {

console.log(res.tempFilePath)

}

})

文件


uni.chooseFile(OBJECT)

从本地选择文件。

本API主要用于选择非媒体文件,如果选择的文件是媒体文件,另有3个专用API:

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| x | √(HBuilder X2.9.9+) | x(可使用wx.chooseMessageFile) | x | x | x | x | x |

  • App端如需选择非媒体文件,可在插件市场搜索文件选择,其中Android端可以使用Native.js,无需原生插件,而iOS端需要原生插件。

  • App端如果想选择下载到_doc_downloads_documents等plus.io控制的目录下的文件,可通过plus.io Api,自己做选择框。

  • 选择文件大多为了上传,uni ui封装了更完善的uni-file-picker组件,文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。

OBJECT 参数说明

| 参数名 | 类型 | 默认值 | 必填 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- | :-- |

| count | Number | 100 | 否 | 最多可以选择的文件数量 | 见下方说明 |

| type | String | ‘all’ | 否 | 所选的文件的类型 | 见下方说明 |

| extension | Array | | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 | 见下方说明 |

| sourceType | Array | [‘album’,‘camera’] | 否 | (仅在type为imagevideo时可用)album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 | |

| success | Function | | 是 | 成功则返回图片的本地文件路径列表 tempFilePaths | |

| fail | Function | | 否 | 接口调用失败的回调函数 | |

| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |   |

Tips

  • count 值在 H5 平台的表现,基于浏览器本身的规范。目前测试的结果来看,只能限制单选/多选,并不能限制数量。并且,在实际的手机浏览器很少有能够支持多选的。

  • sourceType 在H5端对应inputcapture属性,设置为['album']无效,依然可以使用相机。

  • extension暂只支持文件后缀名,例如['.zip','.exe','.js'],不支持application/msword等类似值

注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile,在应用下次启动时才能访问得到。

OBJECT.type 的合法值

| 值 | 说明 |

| :-- | :-- |

| all | 从所有文件选择 |

| video | 只能选择视频文件 |

| image | 只能选择图片文件 |

Tips

  • 如果type属性和extension同时存在,例如{type:'image',extension:['.png','.jpg']},则会选择image/png,image/jpg文件

  • 如果只配置extension属性,例如{extension:['.doc','.xlsx','.docx']},则会选择.doc,.xlsx,.docx文件,详情见accept属性

  • 在微信环境中,如果type="all",则extension属性失效

success 返回参数说明

| 参数 | 类型 | 说明 |

| :-- | :-- | :-- |

| tempFilePaths | Array | 文件的本地文件路径列表 |

| tempFiles | Array、Array | 文件的本地文件列表,每一项是一个 File 对象 |

File 对象结构如下

| 参数 | 类型 | 说明 |

| :-- | :-- | :-- |

| path | String | 本地文件路径 |

| size | Number | 本地文件大小,单位:B |

| name | String | 包含扩展名的文件名称,仅H5支持 |

| type | String | 文件类型,仅H5支持 |

示例

uni.chooseFile({

count: 6, //默认100

extension:[‘.zip’,‘.doc’],

success: function (res) {

console.log(JSON.stringify(res.tempFilePaths));

}

});

// 选择图片文件

uni.chooseFile({

count: 10,

type: ‘image’,

success (res) {

// tempFilePath可以作为img标签的src属性显示图片

const tempFilePaths = res.tempFiles

}

})

wx.chooseMessageFile(OBJECT)

从微信聊天会话中选择文件。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| x | x | √(基础库2.5.0+) | x | x | x | √(基础库1.18.0+) | x |

录音管理


uni.getRecorderManager()

获取全局唯一的录音管理器 recorderManager

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | x | √ | x | √ | √ | √ | x |

recorderManager 对象的方法列表

| 方法 | 参数 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- |

| start | options | 开始录音 | |

| pause | | 暂停录音 | App 暂不支持 |

| resume | | 继续录音 | App 暂不支持 |

| stop | | 停止录音 | |

| onStart | callback | 录音开始事件 | |

| onPause | callback | 录音暂停事件 | |

| onStop | callback | 录音停止事件,会回调文件地址 | |

| onFrameRecorded | callback | 已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件 | App 暂不支持 |

| onError | callback | 录音错误事件, 会回调错误信息 |   |

start(options) 说明

| 属性 | 类型 | 必填 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- |

| duration | Number | 否 | 指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟) | App、小程序支持 |

| sampleRate | Number | 否 | 采样率,有效值 8000/16000/44100 | App、小程序支持 |

| numberOfChannels | Number | 否 | 录音通道数,有效值 1/2 | 仅小程序支持 |

| encodeBitRate | Number | 否 | 编码码率,有效值见下表格 | 仅小程序支持 |

| format | String | 否 | 音频格式,有效值 aac/mp3/wav/PCM。App默认值为mp3,小程序默认值aac | App、小程序支持 |

| frameSize | String | 否 | 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。 | App、百度小程序不支持 |

其中,采样率和码率有一定要求,具体有效值如下:

| 采样率 | 编码码率 |

| :-- | :-- |

| 8000 | 16000 ~ 48000 |

| 11025 | 16000 ~ 48000 |

| 12000 | 24000 ~ 64000 |

| 16000 | 24000 ~ 96000 |

| 22050 | 32000 ~ 128000 |

| 24000 | 32000 ~ 128000 |

| 32000 | 48000 ~ 192000 |

| 44100 | 64000 ~ 320000 |

| 48000 | 64000 ~ 320000 |

onStop(callback) 回调结果说明

| 属性 | 类型 | 说明 |

| :-- | :-- | :-- |

| tempFilePath | String | 录音文件的临时路径 |

onFrameRecorded(callback) 回调结果说明

| 属性 | 类型 | 说明 |

| :-- | :-- | :-- |

| frameBuffer | ArrayBuffer | 录音分片结果数据 |

| isLastFrame | Boolean | 当前帧是否正常录音结束前的最后一帧 |

onError(callback) 回调结果说明

| 属性 | 类型 | 说明 |

| :-- | :-- | :-- |

| errMsg | String | 错误信息 |

注意

示例

<button @tap=“startRecord”>开始录音

<button @tap=“endRecord”>停止录音

<button @tap=“playVoice”>播放录音

const recorderManager = uni.getRecorderManager();

const innerAudioContext = uni.createInnerAudioContext();

innerAudioContext.autoplay = true;

export default {

data() {

return {

text: ‘uni-app’,

voicePath: ‘’

}

},

onLoad() {

let self = this;

recorderManager.onStop(function (res) {

console.log(‘recorder stop’ + JSON.stringify(res));

self.voicePath = res.tempFilePath;

});

},

methods: {

startRecord() {

console.log(‘开始录音’);

recorderManager.start();

},

endRecord() {

console.log(‘录音结束’);

recorderManager.stop();

},

playVoice() {

console.log(‘播放录音’);

if (this.voicePath) {

innerAudioContext.src = this.voicePath;

innerAudioContext.play();

}

}

}

}

背景音频播放管理


uni.getBackgroundAudioManager()

获取全局唯一的背景音频管理器 backgroundAudioManager

背景音频,不是游戏的背景音乐,而是类似QQ音乐那样,App在后台时,仍然在播放音乐。如果你不需要在App切后台时继续播放,那么不应该使用本API,而应该使用普通音频APIuni.createInnerAudioContext

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序 | 飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | x | √ | x | √ | √ | x | √ | x |

backgroundAudioManager 对象的属性列表

| 属性 | 类型 | 说明 | 只读 |

| :-- | :-- | :-- | :-- |

| duration | Number | 当前音频的长度(单位:s),只有在当前有合法的 src 时返回 | 是 |

| currentTime | Number | 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回 | 是 |

| paused | Boolean | 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放 | 是 |

| src | String | 音频的数据源,默认为空字符串,**当设置了新的 src 时,会自动开始播放,**目前支持的格式有 m4a, aac, mp3, wav | 否 |

| startTime | Number | 音频开始播放的位置(单位:s) | 否 |

| buffered | Number | 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。 | 是 |

| title | String | 音频标题,用于做原生音频播放器音频标题。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。 | 否 |

| epname | String | 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 | 否 |

| singer | String | 歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 | 否 |

| coverImgUrl | String | 封面图url,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。 | 否 |

| webUrl | String | 页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 | 否 |

| protocol | String | 音频协议。默认值为 ‘http’,设置 ‘hls’ 可以支持播放 HLS 协议的直播音频,App平台暂不支持 | 否 |

backgroundAudioManager 对象的方法列表

| 方法 | 参数 | 说明 |

| :-- | :-- | :-- |

| play | | 播放 |

| pause | | 暂停 |

| stop | | 停止 |

| seek | position | 跳转到指定位置,单位 s |

| onCanplay | callback | 背景音频进入可以播放状态,但不保证后面可以流畅播放 |

| onPlay | callback | 背景音频播放事件 |

| onPause | callback | 背景音频暂停事件 |

| onStop | callback | 背景音频停止事件 |

| onEnded | callback | 背景音频自然播放结束事件 |

| onTimeUpdate | callback | 背景音频播放进度更新事件 |

| onPrev | callback | 用户在系统音乐播放面板点击上一曲事件(iOS only) |

| onNext | callback | 用户在系统音乐播放面板点击下一曲事件(iOS only) |

| onError | callback | 背景音频播放错误事件 |

| onWaiting | callback | 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发 |

errCode 说明

| errCode | 说明 |

| :-- | :-- |

| 10001 | 系统错误 |

| 10002 | 网络错误 |

| 10003 | 文件错误 |

| 10004 | 格式错误 |

| -1 | 未知错误 |

示例

const bgAudioManager = uni.getBackgroundAudioManager();

bgAudioManager.title = ‘致爱丽丝’;

bgAudioManager.singer = ‘暂无’;

bgAudioManager.coverImgUrl = ‘https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/7fbf26a0-4f4a-11eb-b680-7980c8a877b8.png’;

bgAudioManager.src = ‘https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3’;

注意

因为背景音频播放耗费手机电量,所以平台都有管控,需在manifest中填写申请。

  • ios App平台,背景播放需在manifest.json -> app-plus -> distribute -> ios 节点添加 "UIBackgroundModes":["audio"] 才能保证音乐可以后台播放(打包成ipa生效)

  • 小程序平台,需在manifest.json 对应的小程序节点下,填写"requiredBackgroundModes": [“audio”]。发布小程序时平台会审核

  • Android App端默认不会在通知栏出现音量控制,如需此功能,需要在插件市场单独下载原生插件,详见

音频组件控制


uni.createInnerAudioContext()

创建并返回内部 audio 上下文 innerAudioContext 对象。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | √ | √ | 1.23.4+ | √ | √ | √ | √ |

innerAudioContext 对象的属性列表

| 属性 | 类型 | 说明 | 只读 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- |

| src | String | 音频的数据链接,用于直接播放。 | 否 | 微信小程序不支持本地路径 |

| startTime | Number | 开始播放的位置(单位:s),默认 0 | 否 | |

| autoplay | Boolean | 是否自动开始播放,默认 false | 否 | H5端部分浏览器不支持 |

| loop | Boolean | 是否循环播放,默认 false | 否 | |

| obeyMuteSwitch | Boolean | 是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true | 否 | 微信小程序、百度小程序、字节跳动小程序、飞书小程序 |

| duration | Number | 当前音频的长度(单位:s),只有在当前有合法的 src 时返回,需要在onCanplay中获取 | 是 | |

| currentTime | Number | 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回,时间不取整,保留小数点后 6 位 | 是 | |

| paused | Boolean | 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放 | 是 | |

| buffered | Number | 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。 | 是 | |

| volume | Number | 音量。范围 0~1。 | 否 |   |

innerAudioContext 对象的方法列表

| 方法 | 参数 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- |

| play | | 播放(H5端部分浏览器需在用户交互时进行) | |

| pause | | 暂停 | |

| stop | | 停止 | |

| seek | position | 跳转到指定位置,单位 s | |

| destroy | | 销毁当前实例 | |

| onCanplay | callback | 音频进入可以播放状态,但不保证后面可以流畅播放 | |

| onPlay | callback | 音频播放事件 | |

| onPause | callback | 音频暂停事件 | |

| onStop | callback | 音频停止事件 | |

| onEnded | callback | 音频自然播放结束事件 | |

| onTimeUpdate | callback | 音频播放进度更新事件 | |

| onError | callback | 音频播放错误事件 | |

| onWaiting | callback | 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发 | |

| onSeeking | callback | 音频进行 seek 操作事件 | |

| onSeeked | callback | 音频完成 seek 操作事件 | |

| offCanplay | callback | 取消监听 onCanplay 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offPlay | callback | 取消监听 onPlay 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offPause | callback | 取消监听 onPause 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offStop | callback | 取消监听 onStop 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offEnded | callback | 取消监听 onEnded 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offTimeUpdate | callback | 取消监听 onTimeUpdate 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offError | callback | 取消监听 onError 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offWaiting | callback | 取消监听 onWaiting 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offSeeking | callback | 取消监听 onSeeking 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

| offSeeked | callback | 取消监听 onSeeked 事件 | 微信小程序1.9.0+,支付宝小程序,字节小程序、百度小程序 |

errCode 说明

| errCode | 说明 |

| :-- | :-- |

| 10001 | 系统错误 |

| 10002 | 网络错误 |

| 10003 | 文件错误 |

| 10004 | 格式错误 |

| -1 | 未知错误 |

支持格式

| 格式 | iOS | Android |

| :-- | :-- | :-- |

| flac | x | √ |

| m4a | √ | √ |

| ogg | x | √ |

| ape | x | √ |

| amr | x | √ |

| wma | x | √ |

| wav | √ | √ |

| mp3 | √ | √ |

| mp4 | x | √ |

| aac | √ | √ |

| aiff | √ | x |

| caf | √ | x |

示例

const innerAudioContext = uni.createInnerAudioContext();

innerAudioContext.autoplay = true;

innerAudioContext.src = ‘https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3’;

innerAudioContext.onPlay(() => {

console.log(‘开始播放’);

});

innerAudioContext.onError((res) => {

console.log(res.errMsg);

console.log(res.errCode);

});

tips

  • 如需音频的倍速播放,可通过video的倍速播放替代实现。插件市场有封装好的插件音频倍速播放

  • 如果需要带ui的音频播放器样式,可以在插件市场搜索相关插件

  • Android 4.1 及更高版本对 PCM/WAVE 支持范围是 8 位和 16 位线性 PCM(比特率最高可达到硬件上限)。以 8000、16000 和 44100 Hz 录制原始 PCM 所需的采样率。

视频


uni.chooseVideo(OBJECT)

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

若选择和上传非图像、视频文件,另行参考:https://uniapp.dcloud.io/api/media/file

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | √ | √ | √ | √ | √ | √ | √ |

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- | :-- |

| sourceType | Array | 否 | album 从相册选视频,camera 使用相机拍摄,默认为:[‘album’, ‘camera’] | |

| extension | Array | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 | H5(HBuilder X 2.9.9+) |

| compressed | Boolean | 否 | 是否压缩所选的视频源文件,默认值为 true,需要压缩。 | 微信小程序、百度小程序、字节跳动小程序、飞书小程序、App(HBuilder X 3.2.7+) |

| 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,在应用下次启动时才能访问得到。

  • camera 部分 Android 手机下由于系统 ROM 不支持无法生效,打开拍摄界面后可操作切换

  • 可以通过用户授权API来判断用户是否给应用授予相册或摄像头的访问权限https://uniapp.dcloud.io/api/other/authorize

  • App下如需进一步压缩视频大小,可以在插件市场搜索视频压缩插件

  • 如需上传到cdn,可使用uniCloud.uploadFile API,uniCloud提供了免费cdn给开发者使用,详见https://uniapp.dcloud.io/uniCloud/storage?id=uploadfile

  • 选择视频大多为了上传,uni ui封装了更完善的uni-file-picker组件,文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。

  • 部分浏览器中无法获取视频信息。

示例

hello

<button @tap=“test”>click me

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

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| x | x | 2.10.0+ | x | x | x | x | x |

OBJECT 参数说明

| 参数名 | 类型 | 默认值 | 必填 | 说明 |

| :-- | :-- | :-- | :-- | :-- |

| count | Number | 9(注意:ios不可大于9) | 否 | 最多可以选择的文件个数 |

| mediaType | Array. | [‘image’, ‘video’] | 否 | 文件类型 |

| sourceType | Array. | [‘album’, ‘camera’] | 否 | 图片和视频选择的来源 |

| maxDuration | Number | 10 | 否 | 拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 30s 之间 |

| sizeType | Array. | [‘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. | 本地临时文件列表 |

| type | String | 文件类型,有效值有 image 、video |

res.tempFiles 的结构

| 参数名 | 类型 | 说明 |

| :-- | :-- | :-- |

| tempFilePath | String | 本地临时文件路径 (本地路径) |

| size | Number | 本地临时文件大小,单位 B |

| duration | Number | 视频的时间长度 |

| height | Number | 视频的高度 |

| width | Number | 视频的宽度 |

| thumbTempFilePath | String | 视频缩略图临时文件路径 |

示例

uni.chooseMedia({

count: 9,

mediaType: [‘image’,‘video’],

sourceType: [‘album’, ‘camera’],

maxDuration: 30,

camera: ‘back’,

success(res) {

console.log(res.tempFilest)

}

})

Tips

uni.saveVideoToPhotosAlbum(OBJECT)

保存视频到系统相册。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | x | √ | √ | √ | √ | √ | √ |

OBJECT 参数说明

| 参数名 | 类型 | 必填 | 说明 |

| :-- | :-- | :-- | :-- |

| filePath | String | 是 | 视频文件路径,可以是临时文件路径也可以是永久文件路径 |

| success | Function | 否 | 接口调用成功的回调函数 |

| fail | Function | 否 | 接口调用失败的回调函数 |

| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |

success 返回参数说明

| 参数名 | 类型 | 说明 |

| :-- | :-- | :-- |

| errMsg | String | 调用结果 |

注意

示例

hello

<button @tap=“test”>click me

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端有很多插件支持视频压缩,详见插件市场

压缩完毕后如需上传到cdn,可使用uniCloud.uploadFile API,uniCloud提供了免费cdn给开发者使用,详见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 | 编辑后生成的缩略图文件的临时路径 |

视频组件控制


uni.createVideoContext(videoId, this)

创建并返回 video 上下文 videoContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 <video> 组件。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| √ | √ | √ | 基础库版本>=1.10.0 | √ | √ | √ | √ |

videoContext 对象的方法列表

| 方法 | 参数 | 说明 | 平台差异说明 |

| :-- | :-- | :-- | :-- |

| play | 无 | 播放 | |

| pause | 无 | 暂停 | |

| seek | position | 跳转到指定位置,单位 s | |

| stop | | 停止视频 | 微信小程序 |

| sendDanmu | danmu | 发送弹幕,danmu 包含两个属性 text, color | |

| playbackRate | rate | 设置倍速播放,支持的倍率有 0.5/0.8/1.0/1.25/1.5。微信基础库2.6.3 起支持 2.0 倍速 | |

| requestFullScreen | 无 | 进入全屏,可传入{direction}参数,详见 video 组件文档 | H5和字节跳动小程序不支持{direction}参数 |

| exitFullScreen | 无 | 退出全屏 | |

| showStatusBar | 无 | 显示状态栏,仅在iOS全屏下有效 | 微信小程序、百度小程序、QQ小程序 |

| hideStatusBar | 无 | 隐藏状态栏,仅在iOS全屏下有效 | 微信小程序、百度小程序、QQ小程序 |

注意:

  • app-nvue 平台 2.2.5以下使用本API,需同时设置组件属性id和ref <video id="video1" ref="video1"></video>,或者直接使用 ref,例如 this.$refs.video1,2.2.5+ 支持直接使用 uni.createVideoContext(videoId, this)

示例

<video id=“myVideo” src=“https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/360e4b20-4f4b-11eb-8a36-ebb87efcf8c0.mp4” @error=“videoErrorCallback” :danmu-list=“danmuList”

enable-danmu danmu-btn controls>

弹幕内容

<input @blur=“bindInputBlur” class=“uni-input” type=“text” placeholder=“在此处输入弹幕内容” />

<button @tap=“bindSendDanmu” class=“page-body-button” formType=“submit”>发送弹幕

export default {

data() {

return {

title: ‘video’,

src: ‘’,

inputValue: ‘’,

danmuList: [{

text: ‘第 1s 出现的弹幕’,

color: ‘#ff0000’,

time: 1

},

{

text: ‘第 3s 出现的弹幕’,

color: ‘#ff00ff’,

time: 3

}

]

}

},

onReady: function (res) {

this.videoContext = uni.createVideoContext(‘myVideo’)

},

methods: {

bindInputBlur: function (e) {

this.inputValue = e.target.value

},

bindButtonTap: function () {

var that = this

uni.chooseVideo({

sourceType: [‘album’, ‘camera’],

maxDuration: 60,

camera: [‘front’, ‘back’],

success: function (res) {

this.src = res.tempFilePath

}

})

},

bindSendDanmu: function () {

this.videoContext.sendDanmu({

text: this.inputValue,

color: this.getRandomColor()

})

},

videoErrorCallback: function (e) {

console.log(‘视频错误信息:’)

console.log(e.target.errMsg)

},

getRandomColor: function () {

const rgb = []

for (let i = 0; i < 3; ++i) {

let color = Math.floor(Math.random() * 256).toString(16)

color = color.length == 1 ? ‘0’ + color : color

rgb.push(color)

}

return ‘#’ + rgb.join(‘’)

}

}

}

相机组件控制


uni.createCameraContext()

创建并返回 camera 组件的上下文 cameraContext 对象。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| x | x | √ | x | √ | x | √ | √ |

本API为 camera 组件配套的js API,与 camera 组件的平台兼容性相同,可实现非全屏摄像头。App端可通过plus.camera实现全屏摄像头。

cameraContext 对象的方法列表

| 方法 | 参数 | 说明 |

| :-- | :-- | :-- |

| takePhoto | Object | 拍照,可指定质量,成功则返回图片路径。 |

| setZoom | Object | 设置缩放级别 微信小程序 2.10.0+ 支持 |

| startRecord | Object | 开始录像 |

| stopRecord | Object | 结束录像,成功则返回封面与视频。 |

| onCameraFrame | Function | 获取 Camera 实时帧数据。仅微信小程序平台支持,规范详情 |

cameraContext.takePhoto

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
幕’,

color: ‘#ff00ff’,

time: 3

}

]

}

},

onReady: function (res) {

this.videoContext = uni.createVideoContext(‘myVideo’)

},

methods: {

bindInputBlur: function (e) {

this.inputValue = e.target.value

},

bindButtonTap: function () {

var that = this

uni.chooseVideo({

sourceType: [‘album’, ‘camera’],

maxDuration: 60,

camera: [‘front’, ‘back’],

success: function (res) {

this.src = res.tempFilePath

}

})

},

bindSendDanmu: function () {

this.videoContext.sendDanmu({

text: this.inputValue,

color: this.getRandomColor()

})

},

videoErrorCallback: function (e) {

console.log(‘视频错误信息:’)

console.log(e.target.errMsg)

},

getRandomColor: function () {

const rgb = []

for (let i = 0; i < 3; ++i) {

let color = Math.floor(Math.random() * 256).toString(16)

color = color.length == 1 ? ‘0’ + color : color

rgb.push(color)

}

return ‘#’ + rgb.join(‘’)

}

}

}

相机组件控制


uni.createCameraContext()

创建并返回 camera 组件的上下文 cameraContext 对象。

平台差异说明

| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 |

| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |

| x | x | √ | x | √ | x | √ | √ |

本API为 camera 组件配套的js API,与 camera 组件的平台兼容性相同,可实现非全屏摄像头。App端可通过plus.camera实现全屏摄像头。

cameraContext 对象的方法列表

| 方法 | 参数 | 说明 |

| :-- | :-- | :-- |

| takePhoto | Object | 拍照,可指定质量,成功则返回图片路径。 |

| setZoom | Object | 设置缩放级别 微信小程序 2.10.0+ 支持 |

| startRecord | Object | 开始录像 |

| stopRecord | Object | 结束录像,成功则返回封面与视频。 |

| onCameraFrame | Function | 获取 Camera 实时帧数据。仅微信小程序平台支持,规范详情 |

cameraContext.takePhoto

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-e2Jrv68z-1715625728433)]

[外链图片转存中…(img-zvqqSbFB-1715625728434)]

[外链图片转存中…(img-VwXD1r8x-1715625728434)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值