在微信小程序中,您可以通过以下步骤实现获取原始视频的宽高,并将其压缩至指定宽度(如 720 像素):
选择视频:使用 wx.chooseMedia 让用户选择视频文件。
获取视频信息:使用 wx.getVideoInfo 获取视频的原始宽度和高度。
计算分辨率比例:根据目标宽度(如 720 像素)和原始宽度,计算所需的分辨率比例。
压缩视频:使用 wx.compressVideo,设置 resolution 参数为计算得到的比例,压缩视频至目标宽度。
以下是实现上述步骤的示例代码:
Page({ data: { videoPath: '' }, chooseAndCompressVideo() { const targetWidth = 720; // 目标宽度 // 1. 选择视频 wx.chooseMedia({ count: 1, mediaType: ['video'], sourceType: ['album', 'camera'], success: (res) => { const videoPath = res.tempFiles[0].tempFilePath; this.setData({ videoPath }); // 2. 获取视频信息 wx.getVideoInfo({ src: videoPath, success: (info) => { const originalWidth = info.width; const originalHeight = info.height; // 3. 计算分辨率比例 const resolutionRatio = targetWidth / originalWidth; // 4. 压缩视频 wx.compressVideo({ src: videoPath, resolution: resolutionRatio, success: (compressRes) => { console.log('压缩后的视频路径:', compressRes.tempFilePath); // 在此处处理压缩后的视频文件,例如上传或保存 }, fail: (err) => { console.error('视频压缩失败:', err); } }); }, fail: (err) => { console.error('获取视频信息失败:', err); } }); }, fail: (err) => { console.error('选择视频失败:', err); } }); } });
注意事项:
resolution 参数:wx.compressVideo 的 resolution 参数接受一个 (0, 1] 范围内的值,表示相对于原视频的分辨率比例。通过计算目标宽度与原始宽度的比值,可以得到合适的 resolution 值。例如,若原始视频宽度为 1440 像素,目标宽度为 720 像素,则 resolution 应设置为 0.5。
视频宽高比:上述方法保持了视频的宽高比不变。如果需要调整视频的高度,可以根据原始视频的宽高比,计算目标高度。
基础库版本要求:wx.compressVideo 接口在基础库 2.11.0 及以上版本支持。请确保您的小程序基础库版本满足要求。
通过上述步骤,您可以在微信小程序中实现视频的选择、获取原始尺寸、计算压缩比例,并将视频压缩至指定的宽度。
网友回复