js实现视频镜面反转

添加下一个样式即可

css 复制代码
        #left {
            transform: rotateY(180deg);
        }
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>js通过浏览器调用摄像头</title>
    <style>
        #left {
            transform: rotateY(180deg);
        }
    </style>

</head>
<body>

<div class="banner">
    <video id="left" width="500px" height="500px" autoPlay="autoplay" controls="controls"></video>
    <video id="right" width="500px" height="500px" autoPlay="autoplay" controls="controls"></video>
</div>

</body>

<script>
    let leftVideo = document.getElementById('left');
    let rightVideo = document.getElementById('right');
    function getMedia() {
        let constraints = {
            video: { width: 400, height: 500 },
            audio: false
        };
        navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
        navigator.mediaDevices.getUserMedia(
            constraints,
            function(stream) {
                leftVideo.src = stream;
                leftVideo.play();
            },
            function(error) {
                console.log(error);
            }
        ).then(function(MediaStream) {
            leftVideo.srcObject = MediaStream;
            leftVideo.play();
        });
    }

    getMedia();

    // 当开始播放的时候哦从一个video标签中获取流并将流传给其他的video标签
    leftVideo.onplay = function () {
        rightVideo.srcObject = leftVideo.captureStream()
    }
</script>
</html>

效果

相关推荐
前端一课1 分钟前
【前端每天一题】🔥 第 17 题:什么是浅拷贝与深拷贝?如何实现深拷贝?
前端·面试
前端一课3 分钟前
【前端每天一题】🔥 第 20 题:从输入 URL 到页面渲染全过程
前端·面试
前端一课6 分钟前
【前端每天一题】🔥 第 12 题:== 与 === 的区别?为什么 [] == ![] 是 true?
前端·面试
前端一课7 分钟前
【前端每天一题】🔥 第 13 题:原型链查找规则是什么?为什么对象能访问到方法?
前端·面试
前端一课8 分钟前
【前端每天一题】🔥 第 11 题:this 的指向规则(前端高频必考题)
前端·面试
一 乐11 分钟前
餐厅管理智能点餐系统|基于java+ Springboot的餐厅管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
北极糊的狐11 分钟前
父组件向子组件传参时,传递数组和对象类型的参数的方法
前端·javascript·vue.js
前端一课16 分钟前
【前端每天一题】🔥 第 9 题:防抖(debounce)与节流(throttle)的区别?如何实现?
前端·面试
前端一课18 分钟前
【前端每天一题】🔥 第 10 题:浅拷贝 vs 深拷贝?如何手写深拷贝?
前端·面试
前端一课23 分钟前
【前端每天一题】🔥 第 8 题:什么是事件委托?它的原理是什么?有哪些优点和常见坑? - 前端高频面试题
前端·面试