HTML5 Video/Audio播放本地文件示例介绍


Posted in HTML / CSS onNovember 18, 2013

这段时间经常看到开发者在反复询问同一个问题,为什么通过设置src属性,不能播放本地的媒体文件?例如video.src=”D:\test.mp4”。

这是因为浏览器中的JavaScript不能直接直接访问本地资源(例如文件系统,摄像头,麦克风等),除非事先得到了用户的允许。浏览器之所以进行该限制也是很有必要的,试想一下,如果JavaScript能够肆无忌惮的访问本地的文件系统,那么窃取用户隐私数据就变得轻而易举了,当用户访问网络上的某个网页时,不知不觉中自己机器上保存的信用卡卡号,密码,公司的秘密文件等隐私文件或许已经被恶意的JavaScript程序上传到了远方的服务器上,这对用户来说是不可容忍的。

在得到用户允许后我们还是可以播放本地文件的,下面介绍一种方法。

在页面中插入一个input节点并指定type为file,如果需要播放多个文件,可以添加属性multiple。注册文件节点被更新时的回调函数,在回调函数中调用URL.createObjectURL函数来获取刚选择文件的url,然后把该url设置为audio或video的src值即可。

代码实例如下:

复制代码
代码如下:

<html>
<body>
<input type="file" id="file" onchange="onInputFileChange()">
<audio id="audio_id" controls autoplay loop>Your browser can't support HTML5 Audio</audio>
<script>
function onInputFileChange() {
var file = document.getElementById('file').files[0];
var url = URL.createObjectURL(file);
console.log(url);
document.getElementById("audio_id").src = url;
}
</script>
</body>
</html>

该代码在Chrome 30和Firefox 24上测试通过,在IE上应该存在一定的兼容性问题(据我所知IE8及以前的版本肯定是不能工作的),因为IE对HTML5的支持不好,不知道IE10有没有实现相关的API。
HTML / CSS 相关文章推荐
一款利用纯css3实现的360度翻转按钮的实例教程
Nov 05 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
html5组织文档结构_动力节点Java学院整理
Jul 11 HTML / CSS
HTML5中视频音频的使用详解
Jul 07 HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 HTML / CSS
详解Html5微信支付爬坑之路
Jul 24 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
HTML5实现视频弹幕功能
Aug 09 HTML / CSS
浅析HTML5 Landmark
Sep 11 HTML / CSS
css背景和边框标签实例详解
May 21 HTML / CSS
css中z-index: 0和z-index: auto的区别
Aug 23 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
Nov 18 #HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
Nov 18 #HTML / CSS
HTML5 UTF-8 中文乱码的解决方法
Nov 18 #HTML / CSS
HTML5语音识别标签写法附图
Nov 18 #HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
Nov 12 #HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
Nov 07 #HTML / CSS
html5跨域通讯之postMessage的用法总结
Nov 07 #HTML / CSS
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python入门学习指南分享
2018/04/11 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
监理员的岗位职责
2013/11/13 职场文书
英文自荐信
2013/12/15 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
五一家具促销方案
2014/01/10 职场文书
创先争优制度
2014/01/21 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
写给医生的感谢信
2015/01/22 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
Python测试框架pytest高阶用法全面详解
2022/06/01 Python