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对图片照片进行边缘模糊处理的实现
Aug 08 HTML / CSS
今天学到的CSS最新技术(与图片背景相关)
Dec 24 HTML / CSS
利用CSS3实现圆角的outline效果的教程
Jun 05 HTML / CSS
基于CSS3制作立体效果导航菜单
Jan 12 HTML / CSS
html+css3实现的登录界面
Dec 09 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
Jul 12 HTML / CSS
HTML高亮关键字的实现代码
Oct 22 HTML / CSS
HTML5添加禁止缩放功能
Nov 03 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
Oct 28 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
新浪新闻小偷
2006/10/09 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
php长字符串定义方法
2012/07/12 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
JS作用域深度解析
2016/12/29 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
javascript实现日历效果
2019/06/17 Javascript
Vue程序调试的方法
2019/06/17 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python实现简单的代理服务器
2015/07/25 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
Unix如何添加新的用户
2014/08/20 面试题
国际金融专业自荐信
2014/07/05 职场文书
学习十八大的心得体会
2014/09/12 职场文书
鲁迅故里导游词
2015/02/05 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
七年级作文之环保作文
2019/10/17 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
python井字棋游戏实现人机对战
2022/04/28 Python