Code前端首页关于Code前端联系我们

HTML5云相机开发:照片和相机功能的实际使用

terry 2年前 (2023-09-27) 阅读数 65 #数据结构与算法

为chrome应用程序创建云相机应用程序。该应用包括拍照、录像、保存照片和视频、上传文件等核心功能,其中涉及到许多与媒体流相关的HTML5 API。 。写这篇文章的目的,首先是对知识点进行总结和梳理,最重要的是为有相关需求的读者提供一些指导。

注:本文基于实际操作,不介绍太多理论知识。

拍照

HTML5的getUserMedia API为用户提供了访问硬件设备媒体(相机、视频、音频、地理位置等)的接口。基于该接口,开发者无需依赖任何浏览器插件即可获得访问权限。硬件媒体设备。

浏览器兼容性如下: HTML5云相机开发:拍照、摄像机功能实战

如上图所示,全面支持常见浏览器Firefox、Chrome、Safari、Opera等。

1。获取视频流并使用视频标签播放。

    <video id="video" autoplay></video>
    
    --------------------------------------------------------------
    
    const videoConstraints = { width: 1366, height: 768 };
    const videoNode = document.querySelector('#video');
    let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
    videoNode.srcObject = stream;
    videoNode.play();
复制代码

2。如何在多个摄像设备之间切换? ? HTML5 MediaRecorder 对象提供多媒体录制和视频录制功能。

浏览器兼容性如下: HTML5云相机开发:拍照、摄像机功能实战

如上图所示,浏览器对MediaRecorder的兼容性远不如getUserMedia。目前,只有Chrome和Firefox对MediaRecorder有更好的支持。

==注意:摄像机预览播放器的视频标签一定要设置为静音(以消除回声带来的刺耳噪音)==

    const videoConstraints = { width: 1366, height: 768 };
    let stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: videoConstraints });
    let mediaRecorder = new MediaRecorder(stream);
    let mediaRecorderChunks = []; // 记录数据流
   
    mediaRecorder.ondataavailable = (e) => {
        mediaRecorderChunks.push(e.data);
    };
    
    mediaRecorder.onstop = (e) => {
        // 通过Blob对象,创建文件二进制数据实例。
        let recorderFile = new Blob(mediaRecorderChunks, { 'type' : mediaRecorder.mimeType });
        mediaRecorderChunks = [];
        const file = new File([this.recorderFile], (new Date).toISOString().replace(/:|\./g, '-') + '.mp4', {
            type: 'video/mp4'
        });
        download(URL.createObjectURL(file));
        // 下载视频
        function download (src) {
            if (!src) return;
            const a = document.createElement('a');
            a.setAttribute('download', new Date());
            a.href = src;
            a.click();
        }
    };
    
    mediaRecorder.stop(); // 停止录制,触发onstop事件
复制代码

总结

通过以上实战,我想读者已经掌握了基本拍照功能,拍照、录像、保存文件等。

作者:Team Suge
链接:https://juejin.im/post/5c4916c251882524fe52cf5e来源:
作者。商业转载请联系作者获取授权。非商业转载请注明来源。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门