uni-app video 不显示摄像头预览
uni-app video 不显示摄像头预览
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 15.3.2 (24D81) | HBuilderX |
产品分类:uniapp/H5
浏览器平台:Chrome
浏览器版本:134.0.6998.166
App下载地址或H5网址:
[static-mp-eeaaf131-f61b-4010-ad07-f75cd812a4f1.next.bspapp.com](//ask.dcloud.net.cn/static-mp-eeaaf131-f61b-4010-ad07-f75cd812a4f1.next.bspapp.com)
示例代码:
``` html
<template>
<view class="rootView">
<video ref="video" autoplay playsinline muted id="video" style="width: 100px; height: 100px;"></video>
<button v-on:click="startRecording">开启摄像头</button>
<button v-on:click="stopRecording">关闭摄像头</button>
</view>
</template>
<script>
export default {
name: 'indexPage',
data: function() {
return {
mediaRecorder: null,
videoStream: '',
videoElement: null,
chunks: [],
}
},
onLoad() {
},
mounted() {
},
methods: {
async startRecording() {
try {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
if(this.$refs.video) {
this.$refs.video.srcObject = stream;
}
} catch (error) {
console.error('Error accessing media devices.', error);
}
},
stopRecording() {
},
stopCamera() {
},
test() {
uni.chooseVideo({
sourceType: ['camera', 'album'],
success: function (res) {
self.src = res.tempFilePath;
}
});
}
}
}
</script>
<style>
</style>
操作步骤: 直接点击打开摄像头按钮
预期结果: 显示预览画面
实际结果: 未显示画面
bug描述: web 端使用 video 显示摄像头预览时,未出现预览画面
更多关于uni-app video 不显示摄像头预览的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
权限申请了吗,普通的 h5 页面展示是否正常?是在浏览器打开还是微信打开?
更多关于uni-app video 不显示摄像头预览的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题的原因可能是H5环境下获取摄像头权限后没有正确绑定到video元素上。以下是解决方案:
-
确保在H5环境下使用正确的video元素引用方式。uni-app在H5平台会编译成普通HTML5,可以直接使用DOM API操作。
-
修改startRecording方法如下:
async startRecording() {
try {
const stream = await navigator.mediaDevices.getUserMedia({
audio: true,
video: true
});
const video = document.getElementById('video');
if(video) {
video.srcObject = stream;
video.onloadedmetadata = () => {
video.play();
};
}
} catch (error) {
console.error('Error accessing media devices.', error);
}
}
-
确保浏览器已授予摄像头权限。Chrome会在地址栏显示权限请求图标,点击允许访问摄像头和麦克风。
-
检查控制台是否有错误输出,特别是权限相关的错误。
-
如果仍不显示,尝试给video元素添加明确的宽度高度样式,如:
<video style="width:300px;height:300px;background:#000"></video>
- 在H5环境下,playsinline属性可能需要改为webkit-playsinline来兼容某些浏览器:
<video webkit-playsinline playsinline></video>