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实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 HTML / CSS
CSS3中使用RGBA设置透明度的示例
Aug 04 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
CSS3 @keyframes简单动画实现
Feb 24 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
Jul 25 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
Apr 10 HTML / CSS
html5 更新图片颜色示例代码
Jul 29 HTML / CSS
用HTML5制作数字时钟的教程
May 11 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
Sep 17 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 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多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
Python 字符串定义
2009/09/25 Python
python版学生管理系统
2018/01/10 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
党员先进性教育整改措施
2014/09/18 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server