首页 web前端 H5教程 使用HTML5捕捉音频与视频信息概述及实例_html5教程技巧

使用HTML5捕捉音频与视频信息概述及实例_html5教程技巧

May 16, 2016 pm 03:49 PM
捕捉 音频

本文概述
长期以来,音频与视频信息的捕捉一直是Web开发中的一个难点。许多年来,我们一直依赖浏览器插件来实现这个需求。
在HTML 5中,出现了许多可以访问硬件设备的API,例如访问GPS设备的Geolocation API、访问accelerometer设备的Orientation API、访问GPU设备的WebGL API、访问音频播放设备的Web Audio API等等。这些API是非常强大的,因为开发者可以直接通过编写JavaSccript脚本代码来访问底层硬件设备。
本文介绍一种新的API,该API通过使用navigatior.getUserMedia()方法来让Web应用程序拥有访问用户摄像头与麦克风设备的能力。

捕捉媒体数据的技术发展历史
在过去几年里,开始出现了在Web应用程序中访问客户端本地设备的需求,因此,W3C组织决定组织一个DAP(Device APIS POLICY)工作小组,来为该需求的实现制定一个统一的标准。
接下来让我们来看看在2011年发生了哪些事情:

在HTML页面文件中实现媒体数据的捕捉
DAP工作小组的第一个要制定的标准就是如何在Web应用程序的HTML页面中实现媒体数据的捕捉。他们决定重载类型为file的input元素(),并且为accept属性添加一个新的属性值。
如果开发者想实现用户通过摄像头进行拍照的功能,可以书写如下所示的代码。

复制代码
代码如下:



录制视频数据与音频数据的代码与之类似:

复制代码
代码如下:




在这些代码中,只需使用file控件(类型为file的input元素)即可完成拍照或录制媒体数据的功能。但是在因为这些代码中尚缺乏一些实现与之相关的需求(例如在canvas元素中渲染捕捉到的视频数据,或者对捕捉到的视频数据应用WEBGL滤镜)的能力,所以没有得到开发者的广泛应用。
支持浏览器:
Android 3.0浏览器
Chrome for Android (0.16)
Firefox Mobile 10.0
device元素
如果使用file控件,则捕捉媒体数据后对其进行处理的能力是非常有限的,所以出现了一种新的可支持任何设备的标准。该标准使用device元素。
Opera浏览器是第一个通过device元素实现视频数据捕捉的浏览器。几乎在同一天,WhatWG组织决定使用navigator.getUserMedia()方法来捕捉媒体数据。一个星期后,Opera推出一个新的支持navigator.getUserMedia()方法的浏览器。后来,Microsoft工具推出支持该方法的IE 9浏览器。
device元素的使用方法如下所示。

复制代码
代码如下:



<script> <br />function update(stream) { <br />document.querySelector('video').src = stream.url; <br />} <br /></script>

支持浏览器
不幸的是,目前为止尚没有一个正式版的浏览器中支持device元素。
WEBRTC
最近,由于WebRTC(Web Real Time Communication:Web实时通信)API的出现,媒体数据捕捉技术又有了一个很大的发展。Google、Opera、Mozilla等公司均正在努力将其实现在自己的浏览器中。
WebRTC API是一个与getUserMedia方法紧密相关的API,它提供一种访问客户端本地的摄像头或麦克风设备的能力。
支持浏览器:
目前为止,在Chrome 18版浏览器中,在chrome://flags页面中进行设置后可使用WebRTC,在Chrome 21版本的浏览器中,该API被默认使用,不再需要设置。在Opera 12以上与Firefox 17版本的浏览器中默认支持WebRTC API。
使用getUserMedia方法
通过使用getUserMedia方法,我们可以不依靠插件而直接访问客户端本地的摄像头设备与麦克风设备。
检测浏览器支持
可以通过如下所示的方法来检测浏览器是否支持getUserMedia方法。

复制代码
代码如下:

function hasGetUserMedia() {
//请注意:在Opera浏览器中不使用前缀
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
if (hasGetUserMedia()) {
alert('您的浏览器支持getUserMedia方法');
}
else {
alert('您的浏览器不支持getUserMedia方法');
}

获取访问设备的权限
为了访问客户端摄像头设备与麦克风设备,我们首先需要获取权限。getUserMedia方法的第一个参数是一个用于指定媒体类型的对象。例如,当你想访问摄像头设备时,第一个参数应该为{video:true},为了同时访问摄像头设备与麦克风设备,需要使用{video:true,audio:true}参数,代码如下所示:

复制代码
代码如下:


<script> <br />var onFailSoHard = function() { <br />alert('设备拒绝访问'); <br />}; <br />//不使用供应商前缀 <br />navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) { <br />var video = document.getElementById('video'); <br />video.src = window.URL.createObjectURL(localMediaStream); <br />//请注意:当使用getUserMedia方法时,在Chrome浏览器中不触发onloadedmetadata事件 <br />video.onloadedmetadata = function(e) { <br />//后续代码略 <br />}; <br />}, onFailSoHard); <br /></script>

在这段代码中,结合了video元素的使用。请注意我们没有使用video元素的src属性值,而是为video元素指定了一个引用媒体文件的URL地址,同时将代表了从摄像头中所获取到的视频数据的LocalMediaStream对象转换为一个Blob URL。
在这段代码中,同时为video元素使用autoplay属性,如果不使用该属性,则video元素将停留在所获取的第一帧画面处。
请注意:在Chrome浏览器中,如果只使用{audio:true},则引发BUG,在Opera浏览器中,同样不能使用audio元素。
如果你想让多个浏览器同时支持getUserMedia方法,请使用如下所示的代码:

复制代码
代码如下:

window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
var video = document.getElementById('video');
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true, video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
}, onFailSoHard);
}
else {
alert('您的浏览器不支持getUserMedia方法');
}

安全性
在有些浏览器中,当调用getUserMedia方法时,显示一个提示窗口,询问用户是否允许或拒绝访问他们的摄像头或麦克风。
拍照
在Canvas API中,可以使用ctx.drawImage(video,0,0)方法将video元素中的某一帧画面输出到canvas元素中。当然,既然我们已经将捕捉到的用户摄像头中的图像信息输出到video元素中,当然也可以将图像信息通过video元素输出到canvas元素中,即实现实时拍照功能,代码如下所示。

复制代码
代码如下:


使用HTML5捕捉音频与视频信息概述及实例_html5教程技巧

var video = document.getElementById('video');
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var localMediaStream = null;
function snapshot() {
if (localMediaStream) {
ctx.drawImage(video, 0, 0);
document.getElementById('img').src = canvas.toDataURL('image/png');
}
}
video.addEventListener('click', snapshot, false);
//不使用供应商前缀
navigator.getUserMedia({video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
localMediaStream = stream;
}, onFailSoHard);

应用CSS滤镜
目前为止,可以在Chrome 18以上版本的浏览器中使用CSS滤镜。
通过CSS滤镜的使用,我们可以对video元素中捕捉的视频添加各种图像滤镜效果。

复制代码
代码如下:



<script> <br />var idx = 0; <br />var filters = ['grayscale', 'sepia', 'blur', 'brightness', 'contrast', 'hue-rotate', <br />'hue-rotate2', 'hue-rotate3', 'saturate', 'invert', '']; <br />function changeFilter(e) { <br />var el = e.target; <br />el.className = ''; <br />var effect = filters[idx++ % filters.length]; // loop through filters. <br />if (effect) { <br />el.classList.add(effect); <br />} <br />} <br />document.getElementById('video').addEventListener('click', changeFilter, false); <br /></script>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11如何调节音频平衡?(Win11调整音量的左右声道) Win11如何调节音频平衡?(Win11调整音量的左右声道) Feb 11, 2024 pm 05:57 PM

在Win11电脑上听音乐或看电影,如果扬声器或耳机听起来不平衡,用户可以根据自己的需求手动调整平衡级别。那么我们要如何调整呢?针对这个问题,小编带来了详细的操作教程,希望可以帮到大家。如何在Windows11中平衡左右音频通道?方法一:使用“设置”应用点击键并单击设置。Windows单击系统,然后选择声音。选择更多声音设置。单击您的扬声器/耳机,然后选择属性。导航到“级别”选项卡,然后单击“余额”。确保“左”和

Bose Soundbar Ultra首发体验:开箱即用的家庭影院? Bose Soundbar Ultra首发体验:开箱即用的家庭影院? Feb 06, 2024 pm 05:30 PM

从我记事开始,家里就有一对落地式的大尺寸音箱,让我一直认为电视只有配上一套完整的音响系统才能称得上是电视。但是刚开始工作的时候,我买不起专业的家庭音响。经过查询和了解产品定位后,我发现回音壁这个品类非常适合我,不论是音质、体积还是价格都符合我的需求。因此,我决定选择回音壁。精挑细选后,我选中了2024年初Bose推出了这款全景声回音壁产品:Bose家庭娱乐扬声器Ultra。(图片来源:雷科技摄制)一般来说,想要体验到「原汁原味」的杜比全景声效果,需要我们在家中布置一套经过测量、校准的环绕声+吊顶

调整 Windows 11 上的音频平衡 [左右声道] 的方法 调整 Windows 11 上的音频平衡 [左右声道] 的方法 Oct 04, 2023 pm 07:17 PM

如果您在Windows计算机上听音乐或看电影,您可能已经注意到一侧的声音比另一侧大。这可能是音频设备的默认设置。幸运的是,调整系统的音频平衡相当容易。本文将介绍执行此操作的步骤。为什么我的耳机一侧在Windows11上更安静?大多数情况下,问题可能是耳机未紧密插入或连接松动。此外,如果耳机插孔损坏,您的声卡问题或音频设备受到干扰,您会注意到声音的差异。另一个原因可能是因为它们内部的布线。电线可能已经松动或彼此断开,这会导致耳机不同部分之间的通信出现问题。如何在Windows11中平衡左右音频通道

7种方法来在Windows 11上重新设置声音设置 7种方法来在Windows 11上重新设置声音设置 Nov 08, 2023 pm 05:17 PM

虽然Windows能够管理电脑上的声音,但您可能仍希望干预和重置声音设置,以防您遇到音频问题或故障。然而,随着Microsoft在Windows11中所做的美学变化,将这些设置归零变得更加困难。因此,让我们深入了解如何在Windows11上查找和管理这些设置或重置它们以防出现任何问题。如何以7种简单的方式重置Windows11中的声音设置以下是在Windows11中重置声音设置的七种方法,具体取决于您面临的问题。让我们开始吧。方法1:重置应用的声音和音量设置按键盘上的按钮打开“设置”应用。现在点

如何在 Windows 11 上快速启用或禁用单声道音频 如何在 Windows 11 上快速启用或禁用单声道音频 Sep 22, 2023 pm 06:29 PM

如果您的某个扬声器出现故障且不再工作,您的音质将受到影响。立即更换它可能不是一种选择,但您可以启用单声道音频设置以获得标准化的声音输出。但是,默认情况下它是禁用的,因此以下是在Windows计算机上将左右通道合并为一个的方法。打开或关闭单声道音频更好吗?这取决于情况。如果您有很多背景噪点或拍摄对象移动太多,那么单声道声音可能是您项目的最佳选择。但是,如果您想要更好地控制声音或每个小声音都很重要的身临其境的体验,立体声模式将是一个更好的选择。单声道音频有哪些好处?听音频不需要太多的注意力。听起来更

realtek高清晰音频管理器如何设置麦克风 realtek高清晰音频管理器如何设置麦克风 Jan 02, 2024 am 09:33 AM

win10系统是一款可以进行各种设置和调节的系统,今天小编为大家带来的就是realtek高清晰音频管理器怎么设置麦克风的解决办法!感兴趣的话就快来看看吧。realtek高清晰音频管理器怎么设置麦克风:1、在桌面左下角的显示隐藏图标中找到“realtek高清晰音频管理器”图标。2、点击进入界面中,首先看到的是“扬声器页面”,这个界面可以通过喇叭组态调整喇叭的声音。3、接着是音效,你可以选择自己想要的音效的环境以及“均衡器,流行、摇滚、俱乐部”等等。4、接着是室内矫正音质,室内空间矫正只能够矫正在“

如何启用Win11音频增强功能 如何启用Win11音频增强功能 Jan 26, 2024 am 10:54 AM

有一些小伙伴反映自己电脑中的声音即使开到了最大,音量依旧偏小,这时就可以将系统中的增强音频功能打开,那么具体应该怎么操作呢,接下来小编就给大家详细介绍一下Win11增强音频的打开方法,有需要的小伙伴可以来看一看。打开方法:1、右击左下角任务栏中的开始,选择选项列表中的"设置"。2、进入到新的界面后,点击"系统"中的"声音"选项。3、随后点击"高级"中的"所有声音设备"。4、然后选择"输出设备"中的"耳机"或者"扬声器"。5、最后找到"增强音频",并将其右侧的开关按钮打开就可以了。

使用Python访问各种音频和视频文件的元数据 使用Python访问各种音频和视频文件的元数据 Sep 05, 2023 am 11:41 AM

我们可以使用Mutagen和Python中的eyeD3模块访问音频文件的元数据。对于视频元数据,我们可以使用电影和Python中的OpenCV库。元数据是提供有关其他数据(例如音频和视频数据)的信息的数据。音频和视频文件的元数据包括文件格式、文件分辨率、文件大小、持续时间、比特率等。通过访问这些元数据,我们可以更有效地管理媒体并分析元数据以获得一些有用的信息。在本文中,我们将了解Python提供的一些用于访问音频和视频文件元数据的库或模块。访问音频元数据一些用于访问音频文件元数据的库是-使用诱变

See all articles