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实现背景模糊的三种方式
Mar 09 HTML / CSS
css3实现波纹特效、H5实现动态波浪效果
Jan 31 HTML / CSS
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 HTML / CSS
html5的canvas实现3d雪花飘舞效果
Dec 27 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
Jan 07 HTML / CSS
HTML5 Canvas实现烟花绽放特效
Mar 02 HTML / CSS
html5使用canvas压缩图片的示例代码
Sep 11 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
Sep 17 HTML / CSS
HTML5表单验证特性(知识点小结)
Mar 10 HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
Oct 23 HTML / CSS
使用CSS连接数据库的方式
Feb 28 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
优化PHP代码的53条建议
2008/03/27 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
JS delegate与live浅析
2013/12/21 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
详解Python如何生成词云的方法
2018/06/01 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Python实现代码块儿折叠
2020/04/15 Python
HTTP状态码详解
2021/03/18 杂记
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
助人为乐道德模范事迹材料
2014/08/16 职场文书
公司员工离职证明书
2014/10/04 职场文书
民事申诉状范本
2015/05/20 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Python学习之os包使用教程详解
2022/03/21 Python