HTML5云相机开发:照片和相机功能的实际使用
为chrome应用程序创建云相机应用程序。该应用包括拍照、录像、保存照片和视频、上传文件等核心功能,其中涉及到许多与媒体流相关的HTML5 API。 。写这篇文章的目的,首先是对知识点进行总结和梳理,最重要的是为有相关需求的读者提供一些指导。
注:本文基于实际操作,不介绍太多理论知识。
拍照
HTML5的getUserMedia API为用户提供了访问硬件设备媒体(相机、视频、音频、地理位置等)的接口。基于该接口,开发者无需依赖任何浏览器插件即可获得访问权限。硬件媒体设备。
浏览器兼容性如下:
如上图所示,全面支持常见浏览器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 对象提供多媒体录制和视频录制功能。 浏览器兼容性如下: 如上图所示,浏览器对MediaRecorder的兼容性远不如getUserMedia。目前,只有Chrome和Firefox对MediaRecorder有更好的支持。 ==注意:摄像机预览播放器的视频标签一定要设置为静音(以消除回声带来的刺耳噪音)== 通过以上实战,我想读者已经掌握了基本拍照功能,拍照、录像、保存文件等。 作者:Team Suge 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事件
复制代码总结
链接:https://juejin.im/post/5c4916c251882524fe52cf5e来源:
作者。商业转载请联系作者获取授权。非商业转载请注明来源。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网