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 相关文章推荐
学做Bootstrap的第一个页面
May 15 HTML / CSS
详解css3 object-fit属性
Jul 27 HTML / CSS
CSS3的Flexbox布局的简明入门指南
Apr 08 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
Jan 06 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 HTML / CSS
详解HTML5 window.postMessage与跨域
May 11 HTML / CSS
Html5监听手机摇一摇事件的实现
Nov 07 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
Nov 19 HTML / CSS
处理textarea中的换行和空格
Dec 12 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
Nov 11 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python开发之for循环操作实例详解
2015/11/12 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python学生管理系统代码实现
2020/04/05 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
一道Delphi上机题
2012/06/04 面试题
优秀的茶餐厅创业计划书
2014/01/03 职场文书
《钱学森》听课反思
2014/03/01 职场文书
市场总经理岗位职责
2014/04/11 职场文书
安阳殷墟导游词
2015/02/10 职场文书
会计专业求职信范文
2015/03/19 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书