我想知道您是否使用了视频访谈的网络版本或在线会议的网络版本。他们都支持共享屏幕,也可以打开相机。这些是在浏览器上实现的。
作为前端发展,您是否对实施这些功能的原则感到好奇?
浏览器上音频和视频通信的能力称为WEBRTC(实时通信)。随着音频和视频需求越来越多的音频和视频需求,它是音频和视频的标准API。
音频和视频通信有五个步骤:收集,编码,通信,解码,渲染。
这五个步骤最好理解,但是每个步骤都很满足。
今天,我们开始意识到下一个收集的部分,迅速进入门,并直观地感觉到Webrtc可以做什么。
我们将实施屏幕录制,摄像机录制和录制内容,并支持下载。
开始吧。
浏览器提供了和平API,可用于在屏幕上获取流,麦克风和摄像头流程。
从名称中,我们可以看到获得屏幕流。与用户相关的是麦克风和相机的流动。
获得流后,可以在视频的srcobject属性上播放。
如果要录制视频,则需要使用API,它可以监视流中的数据,我们可以将获得的数据保存到数组中,然后将其设置回另一个视频的SRCOBject属性。
下载还基于Mediarecorder录制的数据。变成斑点后,下载是由A标签触发的。
可能我们澄清了思想,让我们写下代码。
我们在页面上放了两个视频标签,一个用于真实的视频,另一个用于播放。
然后放几个按钮。
单击时“开始录制”和“打开相机”按钮已打开,但是方法不同。
一种是用Getusermedia的API获取麦克风和摄像机数据,另一个是用GetDisplayMedia的API获取屏幕数据。
指定参数,例如较低的高度和帧速率,并将返回流设置为视频的srcobject属性,您可以实时看到相应的音频和视频。
然后,您需要录制。您需要使用Mediarecorder的API,将其传递到流中,然后调用开始方法以打开录音。
起点的参数是分区的大小,将其传递给100表示每100ms的数据。
监视数据可用事件,将获得的数据保存在斑点数组中。
根据Blobs数组生成Blob后,您可以执行并单独下载:
退缩:
Blob必须由URL.CreateObjectUrl处理,才能播放为对象URL。
下载:
生成隐藏标签,设置下载属性以支持下载。然后触发点击事件。
到目前为止,我们已经意识到了麦克风,相机和屏幕的录制,并支持播放和下载。
让我们看一下效果:
完整代码已上传到GitHub:https://tygithub.com/quarkgluonplasma/webrtc-earcercize
这里的副本:
音频和视频通信分为收集,编码,通信,解码和渲染的五个步骤。浏览器的API相关API相关的API称为WEBRTC。
我们实施了下一个系列以开始使用WEBRTC,并支持播放和下载。
涉及3个API:
我们使用前两个API获得屏幕,麦克风和摄像机的流,然后用Mediarecorder录制,将数据保存到阵列中,然后生成斑点。
视频可以将SRCobject属性设置为流,以便可以直接播放。如果设置斑点,则需要使用url.createobjecturn。
下载实现是通过A标签的BLOB对象的对象URL,并且通过下载属性指定下载行为。然后手动触发单击以下载。
我们已经学会了如何使用WEBRTC收集数据。这是音频和视频通信的数据源。将来,会有编码,通信,解码,渲染等,我们以后将了解它。