uniapp 录像
uniapp 录像功能实现方法
在 uniapp 中实现录像功能可以通过调用系统相机或使用第三方插件完成。以下是几种常见的实现方式:
使用 uni.chooseVideo 方法
该方法调用系统相册或相机选择视频文件,但不支持直接录像:
uni.chooseVideo({
sourceType: ['camera'],
success: function (res) {
console.log(res.tempFilePath);
}
});
使用 plus.camera 原生摄像头
通过 HTML5+ API 调用设备原生摄像头功能:

var cmr = plus.camera.getCamera();
cmr.startVideoCapture(function(path){
console.log('视频路径: '+path);
}, function(error){
console.log('失败: '+error.message);
}, {filename:'_doc/video/'});
使用 nvue 原生录制
在 nvue 页面中使用原生组件实现更流畅的录制体验:
<video ref="video" controls></video>
<button @tap="startRecord">开始录制</button>
第三方插件方案

- 使用 uView UI 的拍照录像组件
- 集成 cordova-plugin-media-capture 插件
- 使用 html5-plus 的录音录像API组合
录像参数配置
常见需要配置的录像参数包括:
{
duration: 30, // 录制时长(秒)
bitrate: 1000000, // 比特率
resolution: '720p', // 分辨率
frameRate: 30 // 帧率
}
注意事项
- 真机调试时需要添加相机权限配置
- iOS平台需要配置隐私描述
- 长时间录像需要考虑内存管理
- 不同平台的文件路径处理方式不同
扩展功能实现
添加水印
const ctx = uni.createCanvasContext('watermark');
ctx.drawImage(videoPath, 0, 0);
ctx.setFontSize(16);
ctx.fillText('水印文字', 10, 30);
ctx.draw();
视频压缩
uni.compressVideo({
src: tempFilePath,
quality: 'low',
success: compressed => {
console.log(compressed.tempFilePath);
}
});
以上方法可根据具体需求选择组合使用,实际开发中建议先进行各平台的兼容性测试。






