# wx.chooseMedia

拍摄或从手机相册中选择图片或视频。

## 注意事项

- iOS SDK 版本需要 ≥ 1.0.18
- Android SDK 版本需要 ≥ 1.0.10
- 使用该接口能力之前，需在微信开发者工具 `project.miniapp.json` 中勾选「Media SDK」，若为 iOS 且 iOS SDK >= 1.3.11 则需同时勾选「Media SDK」中的「Video SDK」与「Image SDK」。

![](https://testchu-7gy8occc8dcc14c3-1304825656.tcloudbaseapp.com/img%2Fmelody%2F202409031112530.png)

- 使用该接口能力之前，需在微信开发者工具 `project.miniapp.json` 中配置「Android 权限描述配置」或 iOS「隐私信息访问许可描述」的相册读取、摄像头以及麦克风的许可描述。即，该接口需获得相册读取、摄像头以及麦克风权限才可以调用。
![](https://res.wx.qq.com/op_res/iWKxAkX6DmXvKx_Z9gVonCo7CfeqKkYK13wL-qTfxvsvlnHs5ba0MIGwwSUQZ2W8ZJXGhrjTS5npE9SLU2I7EA)

- 补充：如果 Android 的 `targetSdkVersion` 配置为 33 及以上，则需在 `project.miniapp.json` 中新增下方这三个权限描述（如果你的开发者工具打开后没有下方三个配置，请将开发者工具升级到[最新的 nightly 版](/miniprogram/dev/devtools/log.md)）
![](https://testchu-7gy8occc8dcc14c3-1304825656.tcloudbaseapp.com/img%2Fmelody%2F202402231741545.png)

## 参数

### Object object


```json
[
  {
    "属性": "count",
    "类型": "number",
    "默认值": "9",
    "必填": "否",
    "说明": "最多可以选择的文件个数，基础库 2.25.0 前，最多可支持 9 个文件，2.25.0 及以后最多可支持 20 个文件"
  },
  {
    "属性": "mediaType",
    "类型": "Array.<string>",
    "默认值": "['image', 'video']",
    "必填": "否",
    "说明": "文件类型",
    "子项": [
      {
        "合法值": "image",
        "说明": "只能拍摄图片或从相册选择图片"
      },
      {
        "合法值": "video",
        "说明": "只能拍摄视频或从相册选择视频"
      },
      {
        "合法值": "mix",
        "说明": "可以出现视频和图片，但是不可以同时选视频和图片"
      }
    ]
  },
  {
    "属性": "sourceType",
    "类型": "Array.<string>",
    "默认值": "['album', 'camera']",
    "必填": "否",
    "说明": "图片和视频选择的来源",
    "子项": [
      {
        "合法值": "album",
        "说明": "从相册选择"
      },
      {
        "合法值": "camera",
        "说明": "使用相机拍摄"
      }
    ]
  },
  {
    "属性": "maxDuration",
    "类型": "number",
    "默认值": "10",
    "必填": "否",
    "说明": "拍摄视频最长拍摄时间，单位秒。时间范围为 3s 至 60s 之间。不限制相册。"
  },
  {
    "属性": "sizeType",
    "类型": "Array.<string>",
    "默认值": "['original', 'compressed']",
    "必填": "否",
    "说明": "是否压缩所选文件，仅对 mediaType 为 image 时有效"
  },
  {
    "属性": "camera",
    "类型": "string",
    "默认值": "'back'",
    "必填": "否",
    "说明": "仅在 sourceType 为 camera 时生效，使用前置或后置摄像头",
    "子项": [
      {
        "合法值": "back",
        "说明": "使用后置摄像头"
      },
      {
        "合法值": "front",
        "说明": "使用前置摄像头"
      }
    ]
  },
  {
    "属性": "success",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用成功的回调函数"
  },
  {
    "属性": "fail",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用失败的回调函数"
  },
  {
    "属性": "complete",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用结束的回调函数（调用成功、失败都会执行）"
  }
]
```

#### object.success 回调函数
##### 参数

###### Object res


```json
[
  {
    "属性": "tempFiles",
    "类型": "Array.<Object>",
    "说明": "本地临时文件列表",
    "子项": [
      {
        "结构属性": "tempFilePath",
        "类型": "string",
        "说明": "本地临时文件路径 (本地路径)"
      },
      {
        "结构属性": "size",
        "类型": "number",
        "说明": "本地临时文件大小，单位 B"
      },
      {
        "结构属性": "duration",
        "类型": "number",
        "说明": "视频的时间长度"
      },
      {
        "结构属性": "height",
        "类型": "number",
        "说明": "视频的高度"
      },
      {
        "结构属性": "width",
        "类型": "number",
        "说明": "视频的宽度"
      },
      {
        "结构属性": "thumbTempFilePath",
        "类型": "string",
        "说明": "视频缩略图临时文件路径"
      },
      {
        "结构属性": "fileType",
        "类型": "string",
        "说明": "文件类型",
        "子项": [
          {
            "合法值": "image",
            "说明": "图片"
          },
          {
            "合法值": "video",
            "说明": "视频"
          }
        ]
      }
    ]
  },
  {
    "属性": "type",
    "类型": "string",
    "说明": "文件类型，有效值有 image、video、mix"
  }
]
```

## 示例代码

``` js
wx.chooseMedia({
  count: 9,
  mediaType: ['image','video'],
  sourceType: ['album', 'camera'],
  maxDuration: 30,
  camera: 'back',
  success(res) {
    console.log(res.tempFiles[0].tempFilePath)
    console.log(res.tempFiles[0].size)
  }
})
```
