前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js调用网页摄像头进行直播/拍照

js调用网页摄像头进行直播/拍照

作者头像
仙士可
发布2022-02-18 20:58:44
4.7K0
发布2022-02-18 20:58:44
举报
文章被收录于专栏:仙士可博客仙士可博客

前置条件

需要https/火狐浏览器

网页需要有摄像头

创建一个html文件,里面包含2个标签:

video 视频播放标签,canvas 图片渲染标签:

代码语言:javascript
复制
    <video id="video" autoplay style="width: 480px;height: 320px"></video>

    <canvas id="canvas" width="480" height="320"></canvas>

核心代码

获取浏览器支持的流媒体对象

代码语言:javascript
复制
    function getUserMediaToPhoto(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) {
        //firefox浏览器
        navigator.mozGetUserMedia(constraints, success, error);
      } else if (navigator.getUserMedia) {
        //旧版API
        navigator.getUserMedia(constraints, success, error);
      }
    }

通过此函数,获取当前浏览器支持的getUserMedia 对象

开启浏览器摄像头/语音权限 

代码语言:javascript
复制
 getUserMediaToPhoto({ video: { width: 480, height: 320 },audio: true }, success, error);

具体文档可查看:https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia

流处理:

调用后,浏览器将请求拍照权限,设备允许后将调用回调函数:

代码语言:javascript
复制
  var video = document.getElementById('video');
        var success = function(stream){
            video.srcObject = stream;
        }

stream是一个mediaSteam对象https://developer.mozilla.org/en-US/docs/Web/API/MediaStream

新建一个video标签,id为video,将srcObject赋值为stream即可在网页预览摄像头数据:

仙士可博客
仙士可博客

截图或流媒体传输:

流媒体传输可以自己百度,本人懒得整,这边说一下将video截图实现拍照功能:

代码语言:javascript
复制
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
 // 将video画面描绘在canvas画布上
context.drawImage(video, 0, 0, 480, 320);
仙士可博客
仙士可博客

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置条件
  • 核心代码
  • 流处理:
  • 截图或流媒体传输:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档