# 媒体

# 图片

# saveImageToPhotosAlbum

基础库 2.0.7 开始支持,iOS版本 2.10.7,Android版本2.11.43

saveImageToPhotosAlbum(Object object)

保存图片到系统相册。

参数

Object object

属性 类型 默认值 必填 说明
filePath string 图片文件路径,可以是临时文件路径或永久文件路径,不支持网络图片路径
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读取外部存储、读写外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.saveImageToPhotosAlbum({
  filePath: 'finfile://xxxx',
  success(res) { }
})

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予相册权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请相册权限
  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读取外部存储、读写外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# previewMedia

预览图片和视频。

参数

Object object

属性 类型 默认值 必填 说明
sources Array.<Object> 需要预览的资源列表
current number 0 当前显示的资源序号
showmenu boolean true 是否显示长按菜单,长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应二维码或小程序码)的菜单
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.sources 的结构

属性 类型 默认值 必填 说明
url String 图片或视频的地址
type String image 资源的类型,默认为图片
poster string 视频的封面图片

type 的合法值

说明 最低版本
image 图片
video 视频

# previewImage

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

previewImage(Object object)

在新页面中全屏预览图片。

参数

Object object

属性 类型 默认值 必填 说明
urls Array.<string> 需要预览的图片链接列表
current string urls 的第一张 当前显示图片的链接
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.previewImage({
  current: '', // 当前显示图片的http链接
  urls: [] // 需要预览的图片http链接列表
})

# getImageInfo

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

getImageInfo(Object object)

获取图片信息。

参数

Object object

属性 类型 默认值 必填 说明
src string 图片的路径,可以是相对路径、临时文件路径、存储文件路径、网络图片路径
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
width number 图片原始宽度,单位px。
height number 图片原始高度,单位px。
path string 图片的本地路径

示例代码

ft.getImageInfo({
  src: 'images/a.jpg',
  success(res) {
    console.log(res.width)
    console.log(res.height)
  }
})

ft.chooseImage({
  success(res) {
    ft.getImageInfo({
      src: res.tempFilePaths[0],
      success(res) {
        console.log(res.width)
        console.log(res.height)
      }
    })
  }
})

# compressImage

ft.compressImage(Object object)

基础库 2.0.5 开始支持,iOS版本 2.10.4,Android版本 2.11.39

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

参数

Object object

属性 类型 默认值 必填 说明
src string 图片路径,图片的路径,支持本地路径、代码包路径
quality number 80 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效)。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)
# object.success 回调函数
# 参数
属性 类型 说明
tempFilePath string 压缩后图片的临时文件路径 (本地路径)

示例代码

ft.compressImage({
  src: '', // 图片路径
  quality: 80 // 压缩质量
})

# chooseFile

从客户端会话选择文件

参数

Object object

属性 类型 默认值 必填 说明
count number true 最多可以选择的文件个数,可以 0~100
type string 'all' 所选的文件的类型
extension Array.<string> 根据文件拓展名过滤,仅 type==file 时有效。每一项都不能是空字符串。默认不过滤。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读写外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.type 的合法值

说明
all 从所有文件选择
video 只能选择视频文件
image 只能选择图片文件
file 可以选择除了图片和视频之外的其它的文件

注意

  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读写外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# chooseMessageFile

基础库1.3.9开始支持,需要以自定义 API 实现

从文件管理器选择文件。

参数

Object object

属性 类型 默认值 必填 说明
count number true 最多可以选择的文件个数,可以 0~100
type string 'all' 所选的文件的类型
extension Array.<string> 根据文件拓展名过滤,仅 type==file 时有效。每一项都不能是空字符串。默认不过滤。
camera string 'back' 默认拉起的是前置或者后置摄像头。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读写外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.type 的合法值

说明
all 从所有文件选择
video 只能选择视频文件
image 只能选择图片文件
file 可以选择除了图片和视频之外的其它的文件

注意

  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读写外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# chooseImage

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

chooseImage(Object object)

从本地相册选择图片或使用相机拍照。

参数

Object object

属性 类型 默认值 必填 说明
count number 9 最多可以选择的图片张数
sizeType Array.<string> ['original', 'compressed'] 所选的图片的尺寸
sourceType Array.<string> ['album', 'camera'] 选择图片的来源
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读取外部存储、读写外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.sizeType 的合法值

说明
original 原图
compressed 压缩图

object.sourceType 的合法值

说明
album 从相册选图
camera 使用相机

object.success 回调函数

参数

Object res

属性 类型 说明
tempFilePaths Array.<string> 图片的本地临时文件路径列表
tempFiles Array.<Object> 图片的本地临时文件列表

res.tempFiles 的结构

属性 类型 说明
path string 本地临时文件路径
size number 本地临时文件大小,单位 B

示例代码

ft.chooseImage({
  count: 1,
  sizeType: ['original', 'compressed'],
  sourceType: ['album', 'camera'],
  success(res) {
    // tempFilePath可以作为img标签的src属性显示图片
    const tempFilePaths = res.tempFilePaths
  }
})

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予相册权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请相册权限
  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读取外部存储、读写外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# fileToBase64

ft.fileToBase64(Object object)

图片转换成base64数据

参数

Object object

属性 类型 默认值 必填 说明
url string 图片路径,图片的路径,支持本地路径

object.success 回调函数

参数

属性 类型 说明
data string 转换后的base64数据

示例代码

ft.fileToBase64({
  url: '', // 图片路径
})

# 视频

# saveVideoToPhotosAlbum

基础库 2.0.7 开始支持,iOS版本 2.10.7,Android版本2.11.43

saveVideoToPhotosAlbum(Object object)

保存视频到系统相册。支持mp4视频格式。

参数

Object object

属性 类型 默认值 必填 说明
filePath string 视频文件路径,可以是临时文件路径也可以是永久文件路径 (本地路径)
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读取外部存储、读写外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.saveVideoToPhotosAlbum({
  filePath: 'finfile://xxx',
  success (res) {
    console.log(res.errMsg)
  }
})

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予相册权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请相册权限
  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读取外部存储、读写外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# createVideoContext

基础库 2.11.2 开始支持,iOS 版本 2.34.1,Android 版本 2.34.1 VideoContext ft.createVideoContext(string id, Object this)

创建 video 上下文 VideoContext 对象。

参数

string id

video 组件的 id

Object this

在自定义组件下,当前组件实例的this,以操作组件内 video 组件

返回值

VideoContext

# VideoContext 方法

VideoContext.play()

播放视频

VideoContext.pause()

暂停视频

VideoContext.stop()

停止视频

VideoContext.seek(number position)

跳转到指定位置

position 单位 s

VideoContext.sendDanmu(Object data)

发送弹幕

参数

Object data

属性 类型 默认值 必填 说明
text string 弹幕文字
color string 弹幕颜色

VideoContext.playbackRate(number rate)

设置倍速播放

倍率 rate,合法值 0.5/0.8/1.0/1.25/1.5/2

VideoContext.requestFullScreen(Object object)

进入全屏(IDE 不支持)

参数

Object object

属性 类型 默认值 必填 说明
direction number 设置全屏时视频的方向,不指定则根据宽高比自动判断。合法值:0、90、-90

VideoContext.exitFullScreen()

退出全屏(IDE 不支持)

VideoContext.showStatusBar()

显示状态栏,仅在iOS全屏下有效。

VideoContext.hideStatusBar()

隐藏状态栏,仅在iOS全屏下有效。

VideoContext.requestBackgroundPlayback()

进入后台音频播放模式(IDE 不支持)

VideoContext.exitBackgroundPlayback()

退出后台音频播放模式(IDE 不支持)

# chooseVideo

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

chooseVideo(Object object)

从本地相册选择视频或使用相机拍摄视频。

参数

Object object

属性 类型 默认值 必填 说明
sourceType Array.<string> ['album', 'camera'] 选择视频的来源
compressed boolean true 是否压缩所选择的视频文件
maxDuration number 60 拍摄视频最长拍摄时间,单位秒
camera string 'back' 默认拉起的是前置或者后置摄像头。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予读取外部存储权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.sourceType 的合法值

说明
album 从相册选择视频
camera 使用相机拍摄视频

object.camera 的合法值

说明
back 默认拉起后置摄像头
front 默认拉起前置摄像头

object.success 回调函数

参数

Object res

属性 类型 说明
coverImagePath string 选定视频的预览图片路径
duration number 选定视频的时间长度
tempFilePath string 选定视频的临时文件路径
size number 选定视频的数据量大小
width number 图片原始宽度,单位px。
height number 图片原始高度,单位px

示例代码

ft.chooseVideo({
  sourceType: ['album', 'camera'],
  maxDuration: 60,
  camera: 'back',
  success(res) {
    console.log(res.tempFilePath)
  }
})

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予相册权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请相册权限
  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予读取外部存储权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# previewVideo

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

previewVideo(Object object)

在新页面中全屏预览视频。

参数

Object object

属性 类型 默认值 必填 说明
url string 视频资源地址,可以是临时视频路径或者网络视频路径。
autoplay boolean false 是否压缩所选择的视频文件
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.previewVideo({
  url: 'http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4',
  autoplay: true,
  success(res) {
    console.log(res.tempFilePath)
  }
})

# VideoContext

VideoContext 实例,可通过 ft.createVideoContext 获取。VideoContext 通过 id 跟一个 video 组件绑定,操作对应的 video 组件。

方法

  • VideoContext.play()
    播放视频

  • VideoContext.pause()
    暂停视频

  • VideoContext.stop()
    停止视频

  • VideoContext.seek(number position)
    跳转到指定位置

  • VideoContext.sendDanmu(Object data)
    发送弹幕

  • VideoContext.playbackRate(number rate)
    设置倍速播放

  • VideoContext.requestFullScreen(Object object)
    进入全屏。若有自定义内容需在全屏时展示,需将内容节点放置到 video 节点内。

  • VideoContext.exitFullScreen()
    退出全屏

  • VideoContext.showStatusBar()
    显示状态栏,仅在iOS全屏下有效

  • VideoContext.hideStatusBar()
    隐藏状态栏,仅在iOS全屏下有效

  • VideoContext.exitPictureInPicture()
    退出小窗,该方法可在任意页面调用

# 音频

# stopVoice

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

stopVoice(Object object)

结束播放语音。

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.startRecord({
  success(res) {
    const tempFilePath = res.tempFilePath
    ft.playVoice({
      filePath: tempFilePath,
    })

    setTimeout(() => { ft.stopVoice() }, 5000)
  }
})

# setInnerAudioOption

setInnerAudioOption(Object object) 设置 InnerAudioContext 的播放选项。设置之后对当前小程序全局生效。

参数

Object object

属性 类型 默认值 必填 说明
mixWithOther boolean true 是否与其他音频混播,设置为 true 之后,不会终止其他应用内的音乐
obeyMuteSwitch boolean true (仅在 iOS 生效)是否遵循静音开关,设置为 false 之后,即使是在静音模式下,也能播放声音
speakerOn boolean true true 代表用扬声器播放,false 代表听筒播放,默认值为 true。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

注意 为保证整体体验,speakerOn 为 true 时,客户端会忽略 mixWithOthers 参数的内容,强制与其它音频互斥 不支持在播放音频的过程中切换为扬声器播放,开发者如需切换可以先暂停当前播放的音频并记录下当前暂停的时间点,然后切换后重新从原来暂停的时间点开始播放音频

# playVoice

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

playVoice(Object object)

开始播放语音,同时只允许一个语音文件正在播放, 如果前一个语音文件还没播放完,将中断前一个语音播放。

参数

Object object

属性 类型 默认值 必填 说明
filePath string 需要播放的语音文件的文件路径
duration number 60 指定录音时长,到达指定的录音时长后会自动停止录音,单位:秒
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.startRecord({
  success(res) {
    const tempFilePath = res.tempFilePath
    ft.playVoice({
      filePath: tempFilePath,
      complete() { }
    })
  }
})

# pauseVoice

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38

pauseVoice(Object object)

暂停正在播放的语音。再次调用ft.playVoice播放同一个文件时,会从暂停处开始播放。

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.startRecord({
  success(res) {
    const tempFilePath = res.tempFilePath
    ft.playVoice({
      filePath: tempFilePath
    })

    setTimeout(() => { ft.pauseVoice() }, 5000)
  }
})

# createInnerAudioContext

InnerAudioContext ft.createInnerAudioContext()

创建 audio 上下文 InnerAudioContext 对象。

返回值

InnerAudioContext

# createAudioContext

AudioContext ft.createAudioContext(string id, Object this)

创建 audio 上下文 AudioContext 对象。

参数

string id

audio 组件的 id

Object this

在自定义组件下,当前组件实例的this,以操作组件内 audio 组件

返回值

AudioContext

# AudioContext

AudioContext 实例,可通过 ft.createAudioContext 获取。

AudioContext 通过 id 跟一个 audio 组件绑定,操作对应的 audio 组件。

方法

  • AudioContext.setSrc(string src)
    设置音频地址

  • AudioContext.play()
    播放音频。

  • AudioContext.pause()
    暂停音频。

  • AudioContext.seek(number position)
    跳转到指定位置。

示例代码

<!-- audio.FXML -->
<audio  src="{{src}}" id="myAudio" ></audio>

<button type="primary" bindtap="audioPlay">播放</button>
<button type="primary" bindtap="audioPause">暂停</button>
<button type="primary" bindtap="audio14">设置当前播放时间为14秒</button>
<button type="primary" bindtap="audioStart">回到开头</button>
// audio.js
Page({
  onReady (e) {
    // 使用 ft.createAudioContext 获取 audio 上下文 context
    this.audioCtx = ft.createAudioContext('myAudio')
    this.audioCtx.setSrc('http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46')
    this.audioCtx.play()
  },
  data: {
    src: ''
  },
  audioPlay () {
    this.audioCtx.play()
  },
  audioPause () {
    this.audioCtx.pause()
  },
  audio14 () {
    this.audioCtx.seek(14)
  },
  audioStart () {
    this.audioCtx.seek(0)
  }
})

# InnerAudioContext

InnerAudioContext 实例,可通过 ft.InnerAudioContext 获取。

属性

  • string src
    ​ 音频资源的地址,用于直接播放。

  • number startTime
    ​ 开始播放的位置(单位:s),默认为 0

  • boolean autoplay
    是否自动开始播放,默认为 false

  • boolean loop
    是否循环播放,默认为 false

  • number volume
    音量。范围 0~1。默认为 1

  • number playbackRate
    播放速度。范围 0.5-2.0,默认为 1。

方法

  • InnerAudioContext.play()
    播放

  • InnerAudioContext.pause()
    暂停。暂停后的音频再播放会从暂停处开始播放

  • InnerAudioContext.stop()
    停止。停止后的音频再播放会从头开始播放。

  • InnerAudioContext.seek(number position)
    跳转到指定位置​

  • InnerAudioContext.destroy()
    销毁当前实例

  • InnerAudioContext.onCanplay(function callback)
    监听音频进入可以播放状态的事件。但不保证后面可以流畅播放

  • InnerAudioContext.offCanplay(function callback)
    取消监听音频进入可以播放状态的事件

  • InnerAudioContext.onPlay(function callback)
    监听音频播放事件

  • InnerAudioContext.offPlay(function callback)
    取消监听音频播放事件

  • InnerAudioContext.onPause(function callback)
    监听音频暂停事件

  • InnerAudioContext.offPause(function callback)
    取消监听音频暂停事件

  • InnerAudioContext.onStop(function callback)
    监听音频停止事件

  • InnerAudioContext.offStop(function callback)
    取消监听音频停止事件

  • InnerAudioContext.onEnded(function callback)
    监听音频自然播放至结束的事件

  • InnerAudioContext.offEnded(function callback)
    取消监听音频自然播放至结束的事件

  • InnerAudioContext.onTimeUpdate(function callback)
    监听音频播放进度更新事件

  • InnerAudioContext.offTimeUpdate(function callback)
    取消监听音频播放进度更新事件

  • InnerAudioContext.onError(function callback)
    监听音频播放错误事件

  • InnerAudioContext.offError(function callback)
    取消监听音频播放错误事件

  • InnerAudioContext.onWaiting(function callback)
    监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发

  • InnerAudioContext.offWaiting(function callback)
    取消监听音频加载中事件

  • InnerAudioContext.onSeeking(function callback)
    监听音频进行跳转操作的事件

  • InnerAudioContext.offSeeking(function callback)
    取消监听音频进行跳转操作的事件

  • InnerAudioContext.onSeeked(function callback)
    监听音频完成跳转操作的事件

  • InnerAudioContext.offSeeked(function callback)
    取消监听音频完成跳转操作的事件

示例代码

// innerAudioContext.js
const innerAudioContext = ft.createInnerAudioContext()
innerAudioContext.autoplay = true
innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'
innerAudioContext.onPlay(() => {
  console.log('开始播放')
})
innerAudioContext.onError((res) => {
  console.log(res.errMsg)
  console.log(res.errCode)
})

# 背景音频

# stopBackgroundAudio

停止播放音乐。

ft.stopBackgroundAudio(Object object)

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.stopBackgroundAudio()

# seekBackgroundAudio

控制音乐播放进度

ft.seekBackgroundAudio(Object object)

参数

Object object

属性 类型 默认值 必填 说明
position number --- 音乐位置,单位:秒
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.seekBackgroundAudio({
  position: 30
})

# playBackgroundAudio

使用后台播放器播放音乐

ft.playBackgroundAudio(Object object)

参数

Object object

属性 类型 默认值 必填 说明
dataUrl string 音乐链接,目前支持的格式有 m4a, aac, mp3, wav
title string 音乐标题
coverImgUrl string 封面URL
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# pauseBackgroundAudio

暂停播放音乐

ft.pauseBackgroundAudio(Object object)

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

ft.pauseBackgroundAudio()

# onBackgroundAudioStop

监听音乐停止事件

ft.onBackgroundAudioStop(function callback)

参数

function callback

音乐停止事件的回调函数

# onBackgroundAudioPlay

监听音乐播放事件

ft.onBackgroundAudioPlay(function callback)

参数

function callback

音乐播放事件的回调函数

# onBackgroundAudioPause

监听音乐暂停事件

ft.onBackgroundAudioPause(function callback)

参数

function callback

音乐暂停事件的回调函数

# getBackgroundAudioPlayerState

获取后台音乐播放状态

ft.getBackgroundAudioPlayerState(Object object)

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
duration number 选定音频的长度(单位:s),只有在音乐播放中时返回
currentPosition number 选定音频的播放位置(单位:s),只有在音乐播放中时返回
status number 播放状态
downloadPercent number 音频的下载进度百分比,只有在音乐播放中时返回
dataUrl string 歌曲数据链接,只有在音乐播放中时返回

status 合法值

合法值 说明
0 暂停中
1 播放中
2 没有音乐播放

示例代码

ft.getBackgroundAudioPlayerState({
  success (res) {
    const status = res.status
    const dataUrl = res.dataUrl
    const currentPosition = res.currentPosition
    const duration = res.duration
    const downloadPercent = res.downloadPercent
  }
})

# getBackgroundAudioManager

获取全局唯一的背景音频管理器 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。

返回值

BackgroundAudioManager

# BackgroundAudioManager

BackgroundAudioManager 实例,可通过 ft.getBackgroundAudioManager 获取。

备注: iOS BackgroundAudioManager后台播放音频的能力,需要用户自行在target-capabilities处添加,background Modes 并勾选 audio,AirPlay,and Picture in Picture

属性

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

  • number startTime
    ​ 音频开始播放的位置(单位:s)。

  • string title
    ​ 音频标题,用于原生音频播放器音频标题(必填)。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。

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

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

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

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

  • string protocol
    ​ 音频协议。可以播放的格式取决于系统内置播放器。

  • number playbackRate
    ​ 播放速度。范围 0.5-2.0,默认为 1。(Android 需要 6 及以上版本)

  • number duration
    ​ 当前音频的长度(单位:s),只有在有合法 src 时返回。(只读)

  • number currentTime
    ​ 当前音频的播放位置(单位:s),只有在有合法 src 时返回。(只读)

  • boolean paused
    ​ 当前是否暂停或停止。(只读)

  • number buffered
    ​ 音频已缓冲的时间,仅保证当前播放时间点到此时间点内容已缓冲。(只读)

  • string referrerPolicy
    ​ 不支持

方法

  • BackgroundAudioManager.play()
    播放

  • BackgroundAudioManager.pause()
    暂停音乐

  • BackgroundAudioManager.seek(number currentTime)
    跳转到指定位置

  • BackgroundAudioManager.stop()
    停止音乐

  • BackgroundAudioManager.onCanplay(function callback)
    监听音频进入可以播放状态的事件。但不保证后面可以流畅播放

  • BackgroundAudioManager.onPlay(function callback)
    监听音频播放事件

  • BackgroundAudioManager.onPause(function callback)
    监听音频暂停事件

  • BackgroundAudioManager.onStop(function callback)
    监听音频停止事件

  • BackgroundAudioManager.onEnded(function callback)
    监听音频自然播放至结束的事件

  • BackgroundAudioManager.onTimeUpdate(function callback)
    监听音频播放进度更新事件

  • BackgroundAudioManager.onError(function callback)
    监听音频播放错误事件

  • BackgroundAudioManager.onWaiting(function callback)
    监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发

  • BackgroundAudioManager.onSeeking(function callback)
    监听音频进行跳转操作的事件

  • BackgroundAudioManager.onSeeked(function callback)
    监听音频完成跳转操作的事件

  • BackgroundAudioManager.onNext(function callback)
    监听用户在系统音乐播放面板点击下一曲事件(仅iOS)

  • BackgroundAudioManager.onPrev(function callback)
    监听用户在系统音乐播放面板点击上一曲事件(仅iOS)

示例代码

const backgroundAudioManager = ft.getBackgroundAudioManager()

backgroundAudioManager.title = '此时此刻'
backgroundAudioManager.epname = '此时此刻'
backgroundAudioManager.singer = '许巍'
backgroundAudioManager.coverImgUrl = 'http://xxx'
// 设置了 src 之后会自动播放
backgroundAudioManager.src = 'http://xxx'

# 实时音视频

# createLivePusherContext

createLivePusherContext()

创建 live-pusher 上下文 LivePusherContext 对象。

返回值

LivePusherContext

方法

  • LivePusherContext.start(Object object)
    开始推流,同时开启摄像头预览

  • LivePusherContext.stop(Object object)
    停止推流,同时停止摄像头预览

  • LivePusherContext.pause(Object object)
    暂停推流

  • LivePusherContext.resume(Object object)
    恢复推流

  • LivePusherContext.switchCamera(Object object)
    切换前后摄像头

  • LivePusherContext.snapshot(Object object)
    快照

  • LivePusherContext.toggleTorch(Object object)
    切换手电筒

  • LivePusherContext.playBGM(Object object)
    播放背景音

  • LivePusherContext.stopBGM(Object object)
    停止背景音

  • LivePusherContext.pauseBGM(Object object)
    暂停背景音

  • LivePusherContext.resumeBGM(Object object)
    恢复背景音

  • LivePusherContext.setBGMVolume(Object object)
    设置背景音音量

  • LivePusherContext.setMICVolume(Object object)
    设置麦克风音量

  • LivePusherContext.startPreview(Object object)
    开启摄像头预览

  • LivePusherContext.stopPreview(Object object)
    关闭摄像头预览

# createLivePlayerContext

createLivePlayerContext()

创建 live-player 上下文 LivePlayerContext 对象。建议使用 ft.createSelectorQuery 获取 context 对象。

参数

string id

live-player 组件的 id

Object this

在自定义组件下,当前组件实例的this,以操作组件内 live-player 组件

返回值

LivePlayerContext

方法

  • LivePlayerContext.play(Object object)
    播放

  • LivePlayerContext.stop(Object object)
    停止

  • LivePlayerContext.mute(Object object)
    静音

  • LivePlayerContext.pause(Object object)
    暂停

  • LivePlayerContext.resume(Object object)
    恢复

  • LivePlayerContext.requestFullScreen(Object object)
    进入全屏

  • LivePlayerContext.exitFullScreen(Object object)
    退出全屏

  • LivePlayerContext.exitPictureInPicture(Object object)
    退出小窗,该方法可在任意页面调用

  • LivePlayerContext.snapshot(Object object)
    截图

# 录音

# stopRecord

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38, 依赖扩展 SDK

stopRecord(Object object)

停止录音。

示例代码

ft.startRecord({
  success(res) {
    const tempFilePath = res.tempFilePath
  }
})
setTimeout(function () {
  ft.stopRecord() // 结束录音
}, 10000)

# startRecord

基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38, 依赖扩展 SDK

startRecord(Object object)

开始录音。当主动调用 ft.stopRecord,或者录音超过1分钟时自动结束录音。当用户离开小程序时,此接口无法调用。

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数(当授权失败时,返回错误信息:fail unauthorized 用户未授予相机、录制音频权限)
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
tempFilePath string 录音文件的临时路径

示例代码

ft.startRecord({
  success(res) {
    const tempFilePath = res.tempFilePath
  }
})
setTimeout(function () {
  ft.stopRecord() // 结束录音
}, 10000)

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予麦克风权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请麦克风权限
  • 接口授权失败(Android):
  1. 用户拒绝授权,会返回错误信息:unauthorized 用户未授予相机、录制音频权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized SDK被禁止了主动发起权限申请

# getRecorderManager

RecorderManager ft.getRecorderManager()

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

返回值

RecorderManager

# RecorderManager

全局唯一的录音管理器

方法

  • RecorderManager.start(Object object)
    开始录音

    参数

    Object object

    属性 类型 默认值 必填 说明
    duration number 60000 录音的时长,单位 ms,最大值 600000(10 分钟)
    sampleRate number 8000 采样率(pc不支持)
    numberOfChannels number 2 录音通道数
    encodeBitRate number 48000 编码码率,有效值见下表格
    format string aac 音频格式
    format string aac 音频格式
    frameSize number 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3、pcm 格式。
    audioSource string auto 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3、pcm 格式。

    采样率与编码码率限制

    每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败,具体对应关系如下表。

    采样率 编码码率
    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

    sampleRate

    合法值 说明
    8000 8000 采样率
    11025 11025 采样率
    16000 16000 采样率
    22050 22050 采样率
    24000 24000 采样率
    32000 32000 采样率
    44100 44100 采样率
    48000 48000 采样率

    numberOfChannels

    合法值 说明
    1 1 个通道
    2 2 个通道

    format

    合法值 说明
    mp3 mp3 格式
    aac aac 格式
    wav wav 格式
    PCM pcm 格式

    audioSource

    合法值 说明
    auto 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用
    buildInMic 手机麦克风,仅限 iOS
    headsetMic 有线耳机麦克风,仅限 iOS
    mic 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Android
    camcorder 同 mic,适用于录制音视频内容,仅限 Android
    voice_communication 同 mic,适用于实时沟通,仅限 Android
    voice_recognition 同 mic,适用于语音识别,仅限 Android
  • RecorderManager.pause()
    暂停录音

  • RecorderManager.resume()
    继续录音

  • RecorderManager.stop()
    停止录音

    参数

    Object object

    属性 类型 说明
    tempFilePath string 录音文件的临时路径 (本地路径)
    duration number 录音总时长,单位:ms
    fileSize number 录音文件大小,单位:Byte
  • RecorderManager.onStart(function callback)
    监听录音开始事件

  • RecorderManager.onResume(function callback)
    监听录音继续事件

  • RecorderManager.onPause(function callback)
    监听录音暂停事件

  • RecorderManager.onStop(function callback)
    监听录音结束事件

  • RecorderManager.onError(function callback)
    监听录音错误事件

  • RecorderManager.onInterruptionBegin(function callback)
    监听录音因为受到系统占用而被中断开始事件。pause 事件在此事件后触发​

  • RecorderManager.onInterruptionEnd(function callback)
    监听录音中断结束事件。在收到 interruptionBegin 事件之后,小程序内所有录音会暂停,收到此事件之后才可再次录音成功。

示例代码

const recorderManager = ft.getRecorderManager()

recorderManager.onStart(() => {
  console.log('recorder start')
})
recorderManager.onPause(() => {
  console.log('recorder pause')
})
recorderManager.onStop((res) => {
  console.log('recorder stop', res)
  const { tempFilePath } = res
})
recorderManager.onFrameRecorded((res) => {
  const { frameBuffer } = res
  console.log('frameBuffer.byteLength', frameBuffer.byteLength)
})

const options = {
  duration: 10000,
  sampleRate: 44100,
  numberOfChannels: 1,
  encodeBitRate: 192000,
  format: 'aac',
  frameSize: 50
}

recorderManager.start(options)

注意

  • 接口授权失败(iOS):
  1. 用户拒绝授权,会返回错误信息: unauthorized,用户未授予麦克风权限
  2. 宿主App禁止小程序主动申请权限,会返回错误信息:unauthorized disableauthorized,SDK被禁止申请麦克风权限

# 相机

# createCameraContext

createCameraContext()

创建 camera 上下文 CameraContext 对象。

返回值

CameraContext

# CameraContext.onCameraFrame

CameraFrameListener CameraContext.onCameraFrame(function callback)

获取 Camera 实时帧数据

# 参数

# function callback

回调函数

# 参数

# Object res

属性 类型 说明
width number 图像数据矩形的宽度
height number 图像数据矩形的高度
data ArrayBuffer 图像像素点数据,一维数组,每四项表示一个像素点的 rgba

# 返回值

# CameraFrameListener

注: 使用该接口需同时在 camera 组件属性中指定 frame-size。

# 示例代码

const context = ft.createCameraContext()
const listener = context.onCameraFrame((frame) => {
  console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height)
})
listener.start()

# CameraContext.setZoom

CameraContext.setZoom(Object object)

设置缩放级别

# 参数

# Object object

属性 类型 默认值 必填 说明
zoom number 缩放级别,范围[1, maxZoom]。zoom 可取小数,精确到小数后一位。maxZoom 可在 bindinitdone 返回值中获取。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# object.success 回调函数

# 参数

属性 类型 说明
zoom number 实际设置的缩放级别。由于系统限制,某些机型可能无法设置成指定值,会改用最接近的可设值。

# CameraContext.startRecord

CameraContext.startRecord(Object object)

开始录像

# 参数

# Object object

属性 类型 默认值 必填 说明 最低版本
timeoutCallback function 超过30s或页面 onHide 时会结束录像
<!-- timeout number 30 录制时长上限 2.22.0 -->
<!-- selfieMirror boolean true 是否开启镜像 2.22.0 -->
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# object.timeoutCallback 回调函数

# 参数

属性 类型 说明
tempThumbPath string 封面图片文件的临时路径 (本地路径)
tempVideoPath string 视频的文件的临时路径 (本地路径)

# CameraContext.stopRecord

CameraContext.stopRecord(Object object)

结束录像

# 参数

# Object object

属性 类型 默认值 必填 说明
compressed boolean false 启动视频压缩,压缩效果同chooseVideo
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# object.success 回调函数

# 参数

属性 类型 说明
tempThumbPath string 封面图片文件的临时路径 (本地路径)
tempVideoPath string 视频的文件的临时路径 (本地路径)

# CameraContext.takePhoto

CameraContext.takePhoto(Object object)

拍摄照片

# 参数

# Object object

属性 类型 默认值 必填 说明 最低版本
quality string normal 成像质量, high/normal/low
<!-- selfieMirror boolean true 是否开启镜像 -->
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# object.success 回调函数

# 参数

属性 类型 说明
tempImagePath string 照片文件的临时路径 (本地路径),安卓是jpg图片格式,ios是png

# CameraFrameListener.start

CameraFrameListener.start(Object object)

开始监听帧数据

# 参数

# Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# CameraFrameListener.stop

CameraFrameListener.stop(Object object)

停止监听帧数据

# 参数

# Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# 富文本

# EditorContext.blur

EditorContext.blur(Object object)

编辑器失焦,同时收起键盘。

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.clear

EditorContext.clear(Object object)

清空编辑器内容

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.format

EditorContext.format(string name, string value)

修改样式

参数

string name

属性

string value

支持设置的样式列表

属性
bold
italic
underline
strike
ins
script sub / super
header H1 / H2 / h3 / H4 / h5 / H6
align left / center / right / justify
direction rtl
indent -1 / +1
list ordered / bullet / check
color hex color
backgroundColor hex color
margin/marginTop/marginBottom/marginLeft/marginRight css style
padding/paddingTop/paddingBottom/paddingLeft/paddingRight css style
font/fontSize/fontStyle/fontVariant/fontWeight css style
lineHeight css style
letterSpacing css style
textDecoration css style
textIndent css style
wordWrap css style
wordBreak css style
whiteSpace css style

对已经应用样式的选区设置会取消样式。css style 表示 css 中规定的允许值。

# EditorContext.getContents

EditorContext.getContents(Object object)

获取编辑器内容

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
html string 带标签的HTML内容
text string 纯文本内容
delta Object 表示内容的delta对象

# EditorContext.getSelectionText

EditorContext.getSelectionText(Object object)

获取编辑器已选区域内的纯文本内容。当编辑器失焦或未选中一段区间时,返回内容为空。

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性 类型 说明
text string 纯文本内容

# EditorContext.insertDivider

EditorContext.insertDivider(Object object)

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.insertImage

EditorContext.insertImage(Object object)

插入图片。

地址为临时文件时,获取的编辑器html格式内容中 <img> 标签增加属性 data-local,delta 格式内容中图片 attributes 属性增加 data-local 字段,该值为传入的临时文件地址。

开发者可选择在提交阶段上传图片到服务器,获取到网络地址后进行替换。替换时对于html内容应替换掉 <img> 的 src 值,对于 delta 内容应替换掉 insert { image: abc } 值。

参数

Object object

属性 类型 默认值 必填 说明
src string 图片地址,仅支持 http(s)、base64、云图片(2.8.0)、临时文件(2.8.3)。
alt string 图像无法显示时的替代文本
width string 图片宽度(pixels/百分比)
height string 图片高度 (pixels/百分比)
extClass string 添加到图片 img 标签上的类名
data Object data 被序列化为 name=value;name1=value2 的格式挂在属性 data-custom 上
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

this.editorCtx.insertImage({
  src: 'xx',
  width: '100px',
  height: '50px',
  extClass: className
})

# EditorContext.insertText

EditorContext.insertText(Object object)

覆盖当前选区,设置一段文本

参数

Object object

属性 类型 默认值 必填 说明
text string 文本内容
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.redo

EditorContext.redo(Object object)

恢复

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.removeFormat

EditorContext.removeFormat(Object object)

清除当前选区的样式

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.scrollIntoView

EditorContext.scrollIntoView()

使得编辑器光标处滚动到窗口可视区域内。

# EditorContext.setContents

EditorContext.setContents(Object object)

初始化编辑器内容,html和delta同时存在时仅delta生效

参数

Object object

属性 类型 默认值 必填 说明
html string 带标签的HTML内容
delta Object 表示内容的delta对象
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# EditorContext.undo

EditorContext.undo(Object object)

参数

Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# createMediaRecorder

创建 WebGL 画面录制器,可逐帧录制在 WebGL 上渲染的画面并导出视频文件

ft.createMediaRecorder(Object canvas, Object options)

参数

Object canvas

WebGL 对象,通过 SelectorQuery 获取到的 node 对象或通过 ft.createOffscreenCanvas 创建的离屏 WebGL Canvas 对象

Object options

属性 类型 默认值 必填 说明
duration number 600 指定录制的时长(s),到达自动停止。最大 7200,最小 5
videoBitsPerSecond number 1000 视频比特率(kbps),最小值 600,最大值 3000
gop number 12 视频关键帧间隔
fps number 24 视频 fps

返回值

MediaRecorder

# MediaRecorder

方法

  • MediaRecorder.pause()
    暂停录制

  • MediaRecorder.resume()
    恢复录制

  • MediaRecorder.start()
    开始录制

  • MediaRecorder.stop()
    结束录制