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之背景尺寸Background-size使用介绍
Oct 14 HTML / CSS
用CSS3实现瀑布流布局的示例代码
Nov 10 HTML / CSS
html5调用摄像头功能的实现代码
May 07 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
html5实现多文件的上传示例代码
Feb 13 HTML / CSS
html5设计原理(推荐收藏)
May 17 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
Sep 15 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
Jun 30 HTML / CSS
如何用canvas实现在线签名的示例代码
Jul 10 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 HTML / CSS
html2canvas截图空白问题的解决
Mar 24 HTML / CSS
浅析HTML5 Landmark
Sep 11 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP 高手之路(二)
2006/10/09 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
快速入门python学习笔记
2017/12/06 Python
python实现媒体播放器功能
2018/02/11 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
python 实现UTC时间加减的方法
2018/12/31 Python
Puppeteer使用示例详解
2019/06/20 Python
Python流程控制 while循环实现解析
2019/09/02 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
一些Unix笔试题和面试题
2013/01/22 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
2015元旦节寄语
2014/12/08 职场文书
节水倡议书
2015/01/19 职场文书
党员个人自我评价
2015/03/03 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
党员反邪教心得体会
2016/01/15 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android