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 圆角效果
Jul 15 HTML / CSS
一款基于css3的列表toggle特效实例教程
Jan 04 HTML / CSS
css3动画效果小结(推荐)
Jul 25 HTML / CSS
CSS3绘制六边形的简单实现
Aug 25 HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
Jan 09 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
Apr 10 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
Sep 10 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 HTML / CSS
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
Aug 07 HTML / CSS
CSS基础详解
Oct 16 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
yii2 上传图片的示例代码
2018/11/02 PHP
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
js实现分页功能
2017/05/24 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python中的类与对象之描述符详解
2015/03/27 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python自定义简单图轴简单实例
2018/01/08 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python模拟实现斗地主发牌
2020/01/07 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
《燕子》教学反思
2014/02/18 职场文书
物业品质提升方案
2014/06/08 职场文书
装修施工安全责任书
2014/07/24 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
python 对图片进行简单的处理
2021/06/23 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android