js调用摄像头

这篇博客展示了如何在Vue.js应用中利用Web API的getUserMedia方法调用用户摄像头,实现视频流的获取和播放。通过兼容性处理确保在不同浏览器下正常工作,并提供了成功和错误回调函数以处理操作结果。
<template>
    <div>
        <el-button type="primary" @click="useVideo2">调用摄像头</el-button>
        <video id="video"></video>
    </div>
</template>

<script>
    export default {
        name: 'useVideo',
        data() {

            return {
                video: '',

            }
        },
        mounted() {
        },
        methods: {
            useVideo2() {
                this.video = document.getElementById('video')
                //兼容性写法,判断getUserMedia方法是否存在
                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || window.getUserMedia;
                if (navigator.getUserMedia) {
                    //调用用户媒体设备, 访问摄像头
                    this.getUserMedia({video: {width: 270, height: 150}}, this.success, this.error);
                } else {
                    alert('不支持访问用户媒体');
                }

            },
            // 调用成功的方法
            success(stream) {
                //兼容webkit核心浏览器
                let CompatibleURL = window.URL || window.webkitURL;
                //将视频流设置为video元素的源
                console.log(stream);

                //video.src = CompatibleURL.createObjectURL(stream);
                //将摄像头拍摄的视频赋值给viedeo的srcObject属性
                //src是视频文件,srcObject是实时流
                //摄像头是实时流
                this.video.srcObject = stream;
                //并播放
                this.video.play();
            },
            // 调用失败的方法
            error(error) {
                console.log(`访问用户媒体设备失败${error.name}, ${error.message}`);
            },

            //采集图片
            getUserMedia(constraints, success, error) {
                if (navigator.mediaDevices.getUserMedia) {
                    //最新的标准API
                    navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);
                } else if (navigator.webkitGetUserMedia) {
                    //webkit核心浏览器
                    navigator.webkitGetUserMedia(constraints, success, error)
                } else if (navigator.mozGetUserMedia) {
                    //firfox浏览器
                    navigator.mozGetUserMedia(constraints, success, error);
                } else if (navigator.getUserMedia) {
                    //旧版API
                    navigator.getUserMedia(constraints, success, error);
                }
            },


        }
    }
</script>

<style scoped>

</style>

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值