Uniapp小程序通过camera组件实现视频拍摄
2023-12-15 18:53:45
uni中可以通过调用api的方式去拍摄或者是选择相册的视频,但是在这里我们不采取这种方式,因为调用api的方式,必须跳转,而我们需要在页面中实现,下面看下具体步骤吧...
<camera v-if="!srcUrl && showCamera" device-position="back" flash="auto" binderror="onCameraError" style="width: 100%; height: 400rpx;"></camera>
<video v-if="srcUrl" id="myVideo" :src="srcUrl" controls></video>
<view @click="startShoot">
开始
</view>
<view>
------------------------------------------
------------------------------------------
</view>
<view @click="stopShoot">
结束
</view>
data() {
return {
cameraContext: null,
showCamera: false,
srcUrl: null,
timer: null,
totalSeconds: 0
};
}
?接下来看下,怎么样实现拍摄
onReady() {
this.cameraContext = uni.createCameraContext()
}
methods: {
// 开始拍摄
startShoot() {
this.totalSeconds = 0
this.showCamera = true
this.cameraContext.startRecord({
timeoutCallback: () => {
console.log(this.totalSeconds,'超出限制时长');
},
timeout: 300,
success: (res) => {
this.timer = setInterval(() => {
this.totalSeconds++
}, 1000)
console.log(res, '开始拍摄');
},
fail: (err) => {
this.showCamera = false
uni.showToast({
title: '录制视频失败',
icon: 'none',
mask: true
})
}
})
},
// 结束拍摄
stopShoot() {
if(this.timer) clearInterval(this.timer)
this.cameraContext.stopRecord({
compressed: true,
success: (res) => {
this.srcUrl = res.tempVideoPath
// TODO 获取数据帧
console.log(res, '结束拍摄');
},
fail: (err) => {
uni.showToast({
title: '录制视频失败',
icon: 'none',
mask: true
})
console.log(err, '录制视频失败');
},
complete: () => {
this.showCamera = false
}
})
},
}
到这里已经基本实现了所需的功能,但是还需要处理一下拍摄超时的情况
watch: {
totalSeconds: {
handler(newVal){
if(newVal >= 270) {
console.log(newVal, 'newVal');
this.stopShoot()
}
}
}
}
感觉对你有帮助的小伙伴可以留个star...
文章来源:https://blog.csdn.net/m0_52510500/article/details/135019518
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!