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 translate导致字体模糊的实例代码
Aug 30 HTML / CSS
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
Feb 07 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
使用CSS3 制作一个material-design 风格登录界面实例
Dec 12 HTML / CSS
HTML5-WebSocket实现聊天室示例
Dec 15 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
HTML5计时器小例子
Oct 15 HTML / CSS
HTML5中indexedDB 数据库的使用实例
May 11 HTML / CSS
canvas线条的属性详解
Mar 27 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
Jul 26 HTML / CSS
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
Mar 31 HTML / CSS
CSS子盒子水平和垂直居中的五种方法
Jul 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
xml+php动态载入与分页
2006/10/09 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
PHP单链表的实现代码
2016/07/05 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
在Vue中使用Compass的方法
2018/03/02 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
Python单链表的简单实现方法
2014/09/23 Python
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
安装python及pycharm的教程图解
2019/10/10 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
高校自主招生自荐信
2013/12/09 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
公证委托书模板
2014/04/03 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
鼓舞士气的口号
2014/06/16 职场文书
相亲活动方案
2014/08/26 职场文书
优秀纪检干部材料
2014/08/27 职场文书
元宵节寄语大全
2015/02/27 职场文书
财务统计员岗位职责
2015/04/14 职场文书
Python 中面向接口编程
2022/05/20 Python