chooseVideo传视频无法取到缩略图
微信小程序中 chooseVideo 和 chooseMedia 的区别
两者均为微信小程序提供的媒体选择接口,但功能和使用场景存在差异:
chooseVideo
专用于选择视频文件,支持从相册或相机拍摄获取视频。返回结果包含视频临时路径、时长、大小等信息,但不会自动生成缩略图。需通过 VideoContext
或 wx.createMediaContainer
处理视频帧截图。
chooseMedia
为多类型媒体选择接口(图片+视频),支持同时选择或拍摄多种媒体文件。返回结果中,视频文件会默认生成首帧缩略图(thumbTempFilePath
),适合需要预览的场景。
解决无缩略图问题的方法
方法1:使用 chooseMedia 替代
wx.chooseMedia({count: 1,mediaType: ['video'],success(res) {console.log(res.tempFiles[0].thumbTempFilePath) // 自动生成的缩略图路径}
})
方法2:手动生成缩略图(chooseVideo场景)
wx.chooseVideo({sourceType: ['album', 'camera'],success(res) {const videoCtx = wx.createVideoContext('videoPlayer');videoCtx.seek(0).then(() => {setTimeout(() => {wx.canvasToTempFilePath({x: 0,y: 0,width: 300,height: 200,destWidth: 300,destHeight: 200,canvasId: 'snapshotCanvas',success(res) {console.log(res.tempFilePath) // 自定义缩略图}})}, 500)})}
})
关键差异总结
特性 | chooseVideo | chooseMedia |
---|---|---|
媒体类型 | 仅视频 | 图片+视频混合 |
缩略图生成 | 不支持 | 自动生成首帧缩略图 |
多选支持 | 否 | 是 |
返回数据结构 | 视频专属字段 | 统一媒体文件结构 |
建议根据实际需求选择接口:若需快速获取视频缩略图,优先使用 chooseMedia
;若需要更专业的视频控制(如精确截帧),则选择 chooseVideo
配合手动处理。