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 相关文章推荐
全面总结使用CSS实现水平垂直居中效果的方法
Mar 10 HTML / CSS
前端面试必备之CSS3的新特性
Sep 05 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
Apr 26 HTML / CSS
canvas学习笔记之2d画布基础的实现
Feb 21 HTML / CSS
html5指南-5.使用web storage存储键值对的数据
Jan 07 HTML / CSS
html5 offlline 缓存使用示例
Jun 24 HTML / CSS
html5教程实现Photoshop渐变色效果
Dec 04 HTML / CSS
用html5实现语音搜索框的方法
Mar 18 HTML / CSS
html5图片上传预览示例分享
Apr 14 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
Sep 25 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
Dec 23 HTML / CSS
html+css实现文字折叠特效实例
Jun 02 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设计模式 Proxy (代理模式)
2011/06/26 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP类的封装与继承详解
2015/09/29 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
详解datagrid使用方法(重要)
2020/11/06 Javascript
Python 异常处理实例详解
2014/03/12 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
python cs架构实现简单文件传输
2020/03/20 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
Python socket聊天脚本代码实例
2020/01/02 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
电子商务助理求职自荐信
2014/04/10 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
python中mongodb包操作数据库
2022/04/19 Python