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 和 HTML5 兼容速查表 图文
Apr 01 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
Apr 15 HTML / CSS
CSS中几个与换行有关的属性简明总结
Apr 15 HTML / CSS
CSS3中颜色线性渐变实战
Jul 18 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
Apr 10 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
Nov 18 HTML / CSS
html5 视频播放解决方案
Nov 06 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
Aug 03 HTML / CSS
HTML5 body设置自适应全屏
May 07 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 HTML / CSS
CSS使用Flex和Grid布局实现3D骰子
Aug 05 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
js格式化时间小结
2014/11/03 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python对html过滤处理的方法
2018/10/21 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
有机童装:Toby Tiger
2018/05/23 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
《云雀的心愿》教学反思
2014/02/25 职场文书
高一新生军训感言
2014/03/02 职场文书
关爱老人标语
2014/06/21 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
少年犯观后感
2015/06/11 职场文书
大学新生入学感想
2015/08/07 职场文书
高三物理教学反思
2016/02/20 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS