返回顶部
首页 > 资讯 > 前端开发 > html >怎么使用HTML5捕捉音频与视频信息
  • 696
分享到

怎么使用HTML5捕捉音频与视频信息

2024-04-02 19:04:59 696人浏览 泡泡鱼
摘要

本篇内容介绍了“怎么使用HTML5捕捉音频与视频信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

本篇内容介绍了“怎么使用HTML5捕捉音频与视频信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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元素(<input type="file">),并且为accept属性添加一个新的属性值。

如果开发者想实现用户通过摄像头进行拍照的功能,可以书写如下所示的代码。

复制代码

代码如下:

<input type="file" accept="image/*;capture=camera">

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

复制代码

代码如下:

<input type="file" accept="video/*;capture=camcorder">

<input type="file" accept="audio/*;capture=microphone">

在这些代码中,只需使用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元素的使用方法如下所示。

复制代码

代码如下:

<device type="media" onchange="update(this.data)"></device>

<video autoplay></video>

<script>

function update(stream) {

document.querySelector('video').src = stream.url;

}

</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}参数,代码如下所示:

复制代码

代码如下:

<video autoplay id="video"></video>

<script>

var onFailSoHard = function() {

alert('设备拒绝访问');

};

//不使用供应商前缀

navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) {

var video = document.getElementById('video');

video.src = window.URL.createObjectURL(localMediaStream);

//请注意:当使用getUserMedia方法时,在Chrome浏览器中不触发onloadedmetadata事件

video.onloadedmetadata = function(e) {

//后续代码略

};

}, onFailSoHard);

</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元素中,即实现实时拍照功能,代码如下所示。

复制代码

代码如下:

<video autoplay></video>

<img src="" id="img" ></img>

<canvas style="display:none;" id="canvas" ></canvas>

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元素中捕捉的视频添加各种图像滤镜效果。

复制代码

代码如下:

<style>

#video3 {

width: 307px;

height: 250px;

background: rgba(255,255,255,0.5);

border: 1px solid #ccc;

}

.grayscale {

-webkit-filter: grayscale(1);

}

.sepia {

-webkit-filter: sepia(1);

}

.blur {

-webkit-filter: blur(3px);

}

...

</style>

<video id="video" autoplay></video>

<script>

var idx = 0;

var filters = ['grayscale', 'sepia', 'blur', 'brightness', 'contrast', 'hue-rotate',

'hue-rotate2', 'hue-rotate3', 'saturate', 'invert', ''];

function changeFilter(e) {

var el = e.target;

el.className = '';

var effect = filters[idx++ % filters.length]; // loop through filters.

if (effect) {

el.classList.add(effect);

}

}

document.getElementById('video').addEventListener('click', changeFilter, false);

</script>

“怎么使用HTML5捕捉音频与视频信息”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么使用HTML5捕捉音频与视频信息

本文链接: https://lsjlt.com/news/92121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用HTML5捕捉音频与视频信息
    本篇内容介绍了“怎么使用HTML5捕捉音频与视频信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2024-04-02
  • 怎么在HTML5中嵌入音频和视频
    这篇文章给大家介绍怎么在HTML5中嵌入音频和视频,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。HTML5支持的音频格式:视频视频格式:由上可知,HTML5貌似支持的格式有点少哈,所以当你发现用HTML5放置音频和视频...
    99+
    2023-06-09
  • 怎么配合ffmpeg接口获取视频音频媒体信息
    今天小编给大家分享一下怎么配合ffmpeg接口获取视频音频媒体信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言做音...
    99+
    2023-07-05
  • html5视频只有声音怎么办
    本教程操作环境:Windows10系统、HTML5版、Dell G3电脑。html5视频只有声音怎么办?html5中video视频只有声音没有图像解决方案:使用视频标签;<video width="352" hei...
    99+
    2023-05-14
    html5 视频
  • html5中音频与视频监听器应用的示例分析
    这篇文章将为大家详细讲解有关html5中音频与视频监听器应用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一 介绍1、<au...
    99+
    2024-04-02
  • 使用java怎么将视频转换成音频
    使用java怎么将视频转换成音频?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。spring boot项目pom文件中添加以下依赖<!-- htt...
    99+
    2023-06-14
  • 怎么使用HTML5视频元素
    本文小编为大家详细介绍“怎么使用HTML5视频元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用HTML5视频元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 新引...
    99+
    2024-04-02
  • 怎么用HTML5在网页中嵌入音频和视频播放
    本篇内容介绍了“怎么用HTML5在网页中嵌入音频和视频播放”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!H...
    99+
    2024-04-02
  • 怎么利用FFmpeg合并音频和视频
    这篇文章主要介绍了怎么利用FFmpeg合并音频和视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用FFmpeg合并音频和视频文章都会有所收获,下面我们一起来看看吧。一、FFmpeg 多个音频合并的2种方...
    99+
    2023-07-05
  • HTML5 多媒体优化:使用视频和音频 API 提升性能
    使用 video 标签:使用 HTML5 video 标签替代传统视频播放器,以获得更好的浏览器兼容性和控制。 支持多种格式:提供视频的多种格式(例如 MP4、WebM、OGG),以确保在不同设备上的兼容性。 使用源缓冲区:利用 Med...
    99+
    2024-03-14
    视频与音频API
  • 怎么理解HTML5中的音频和视频媒体播放元素
    本篇文章给大家分享的是有关怎么理解HTML5中的音频和视频媒体播放元素,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。音频和视频的编码/解码器是...
    99+
    2024-04-02
  • HTML5 视听交互:使用视频和音频 API 创造引人入胜的体验
    HTML5 中的视频和音频 API 开辟了一个令人着迷的可能性世界,使开发人员能够创建引人入胜且互动的视听体验。这些 API 提供了强大的功能,使我们能够在 Web 应用程序中轻松地嵌入、控制和操纵视频和音频内容,从而为用户提供身临其境的...
    99+
    2024-03-14
    视频与音频API
  • Android使用音频信息绘制动态波纹
    在一些音乐类应用中, 经常会展示随着节奏上下起伏的波纹信息, 这些波纹形象地传达了声音信息, 可以提升用户体验, 那么是如何实现的呢? 可以使用Visualizer类...
    99+
    2022-06-06
    动态 Android
  • H5新属性audio音频和video视频怎么用
    这篇文章将为大家详细讲解有关H5新属性audio音频和video视频怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 1.音频(audio)<audio&nbs...
    99+
    2024-04-02
  • Android中怎么利用MediaPlay播放音频和视频
    Android中怎么利用MediaPlay播放音频和视频,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现MediaPlay的基本步骤是创建MediaPlay对象调用setDa...
    99+
    2023-06-04
  • 怎么使用Python爬取抖音APP视频
    这篇文章主要讲解了“怎么使用Python爬取抖音APP视频”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python爬取抖音APP视频”吧!记录一下如何用python爬取app数据,...
    99+
    2023-06-15
  • Android音视频开发中VideoView怎么使用
    这篇文章主要介绍“Android音视频开发中VideoView怎么使用”,在日常操作中,相信很多人在Android音视频开发中VideoView怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Andro...
    99+
    2023-06-30
  • Android音视频开发之MediaExtactor怎么使用
    本文小编为大家详细介绍“Android音视频开发之MediaExtactor怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android音视频开发之MediaExtactor怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • php+ffmpeg怎么获取视频缩略图、视频分辨率等相关信息
    小编给大家分享一下php+ffmpeg怎么获取视频缩略图、视频分辨率等相关信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言ffmpeg是一款开源、跨平台的视频处理程序,可用在Windows、mac、linux等平台,...
    99+
    2023-06-29
  • 优化多媒体体验:使用 HTML5 视频和音频 API 提升网站吸引力
    <video> 元素:嵌入视频,控制播放、暂停、音量等。 视频编解码器:支持 H.264、VP8、VP9 等,确保跨浏览器兼容性。 视频元数据:获取视频标题、艺术家、尺寸等信息,增强可访问性和搜索引擎优化(SEO)。 字幕和...
    99+
    2024-03-14
    视频与音频API
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作