uniapp录像时长
uniapp录像时长设置方法
在uniapp中实现录像时长控制,可以通过uni.chooseVideo或uni.createCameraContext API实现。以下是具体方法:
使用uni.chooseVideo设置时长
uni.chooseVideo({
sourceType: ['camera'],
maxDuration: 60, // 单位秒,设置最大录制时长
success(res) {
console.log('视频时长:', res.duration);
}
})
该API会调起原生摄像界面,通过maxDuration参数限制最长录制时间(Android/iOS均支持)。

使用camera组件自定义录制
<template>
<camera device-position="back" @stop="stop"></camera>
</template>
<script>
export default {
methods: {
stop() {
const cameraCtx = uni.createCameraContext();
cameraCtx.startRecord({
timeoutCallback() {
// 达到最大时长自动触发
cameraCtx.stopRecord({
success(res) {
console.log('视频临时路径:', res.tempVideoPath);
}
});
}
});
// 手动停止录制示例
setTimeout(() => {
cameraCtx.stopRecord();
}, 30000); // 30秒后停止
}
}
}
</script>
通过timeoutCallback可实现自动停止录制,需注意不同平台差异:

- Android:支持精确时长控制
- iOS:可能存在约3秒误差
平台差异说明
-
微信小程序
最大时长默认为60秒,可通过maxDuration延长至300秒(需在app.json中声明权限):{ "mp-weixin": { "requiredPrivateInfos": ["chooseVideo"] } } -
H5端限制
浏览器环境下录制时长受设备存储空间和浏览器策略限制,建议通过MediaRecorder API实现:let mediaRecorder; navigator.mediaDevices.getUserMedia({ video: true }) .then(stream => { mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(); setTimeout(() => mediaRecorder.stop(), 10000); // 10秒停止 });
注意事项
- 实际录制时长可能因设备性能略有偏差
- iOS系统对连续录制有内存限制,建议分段处理长时间录制
- 安卓部分机型需要动态申请
CAMERA和RECORD_AUDIO权限 - 使用
uni.chooseVideo时,用户可手动提前结束录制





