这里讲一下 video
控件的用法。
开发环境
video 显示摄像头拍摄内容
html 1 <video id ="video" style ="height: 100%" > </video >
js 方法一「顺序」 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 const video = document .getElementById('video' );const load_camera = () => { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; navigator.getUserMedia({ video: true }, gotStream, noStream); }; const gotStream = (stream ) => { video.srcObject = stream; video.play(); } const noStream = (err ) => { alert("失败" ); } load_camera()
方法二「异步」 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 async function setupCamera ( ) { if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { throw new Error ( 'Browser API navigator.mediaDevices.getUserMedia not available' ); } const video = document .getElementById('video' ); video.width = videoWidth; video.height = videoHeight; video.srcObject = await navigator.mediaDevices.getUserMedia({ 'audio' : false , 'video' : { facingMode: 'user' , width: videoWidth, height: videoHeight, }, }); return new Promise ((resolve ) => { video.onloadedmetadata = () => { resolve(video); }; }); } async function loadVideo ( ) { const video = await setupCamera(); video.play(); return video; }
css video 镜像显示 1 2 3 #video { transform : rotateY (180deg ); }
控制 video 大小 一般很难用 css
或者 js
来控制 video
的大小。
这里给出两个办法
css 这里的原理是,将 video 放在一个父类容器里,通过对父类容器进行大小设定,然后让 video 强行填充父类容器就可以了。
这里给出 video 的样式
1 2 3 4 5 6 video { transform : rotateY (180deg ); width : 100% ; height : 100% ; object-fit : fill; }
canvas 这里是将 video 绘制到 canvas 上,然后,修改 canvas 尺寸做到。
具体的情况可以查看