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 11 HTML / CSS
深入理解css属性的选择对动画性能的影响
Apr 20 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
浅谈pc和移动端的响应式的使用
Jan 03 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
使用html5 canvas创建太空游戏的示例
May 08 HTML / CSS
html5用video标签流式加载的实现
May 20 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 HTML / CSS
amazeui 验证按钮扩展的实现
Aug 21 HTML / CSS
amazeui页面分析之登录页面的示例代码
Aug 25 HTML / CSS
关于HTML编码导致的乱码问题
Sep 04 HTML / CSS
使用CSS自定义属性实现骨架屏效果
Jun 21 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP模板解析类实例
2015/07/09 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
python中元类用法实例
2014/10/10 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
python实现获取Ip归属地等信息
2016/08/27 Python
windows下ipython的安装与使用详解
2016/10/20 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python 把列表转化为字符串的方法
2018/10/23 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
青年文明号创建承诺
2014/03/31 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
倡议书的格式写法
2015/04/28 职场文书
花木兰观后感
2015/06/10 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
php去除数组中为0的元素的实例分析
2021/11/17 PHP