Video/audio标签的一些基础使用心得
常用方法
.play():用于音频视频的播放
.pause():用于音频视频的暂停
常用属性
<audio src="Batmobile Battle Mode Reveal Music.mp3" autobuffer autoplay loop controls ></audio>
durantion:获取目标标签的音频视频文件的时长
loop:设置是否循环播放,有这个标签就循环播放
control:设置是否显示控制组件,有这个标签就显示
src:设置文件路径,可以为blob路径,也可以为base64路径,也可以为绝对路径
currentTime:获取或设置当前音频视频文件的播放时间
autoplay:设置是否自动播放,如果有该属性则打开页面时就自动播放
autobuffer:设置文件播放前是否自动缓存
常用事件
onloadstart:文件开始加载时触发
oncanplay:文件加载完成可以播放时触发
ondurationchange:文件时长发生变化时触发
onended:文件播放结束时触发
onplay:文件播放时触发
ontimeupdate:文件当前播放时间(即currentTime属性)发生变化时触发
some tips:
一、duration的获取
1.$("audio")[0].oncanplay = function(){
console.log($(this)[0].duration);
}
2.$("audio")[0].ondurationchange = function(){
console.log($(this)[0].duration);
}
3、console.log($("audio")[0].duration);
第三句无法获得duration,duration获取必须在文件加载完成后才能获取。1,2都能获取。所以duration一般会和oncanplay、ondurationchange搭配使用
二、事件都是异步的
上面代码中,首先打印出来的是NaN,因为上面事件的完成需要一定时间,也就是关于duration的获取和渲染到标签中最好是在加载事件中完成,如
$("audio")[0].oncanplay = function(){
$("textarea").val($(this)[0].duration);
}
而不是
var time;
$("audio")[0].oncanplay = function(){
time = $(this)[0].duration;
}
$("textarea").val(time); //内容为NaN
三、durationchange的用法
durationchange虽然是时长改变时触发,但是根据以下代码:
1<audio src="Batmobile Battle Mode Reveal Music.mp3" autobuffer autoloop loop controls ></audio>
$("audio")[0].ondurationchange = function(){
alert(1);
}
setTimeout(function(){
$("audio")[0].src = "Batmobile Battle Mode Reveal Music.mp3";
},3000);
可以输出两次1,也就是说只要只要文件重新加载,即便是同个文件,同样的时长,也会触发该事件
四、通过input里的file表单上传多媒体文件给多媒体标签
想到的方法及其可行性
1.利用jquery的val属性直接获取地址
<input type="file" name="" id="">
<script type="text/javascript">
var input = document.querySelector("input");
input.onchange = function(){
console.log($(this).val());
}
</script>
获得的结果是格式为 储存盘:\fakepath\文件名称.格式
因为浏览器出于安全原因不允许直接获取本地文件,所以获得是屏蔽了真实地址的假地址,所以该方法不可行
2.利用FileReader对象获取
<input type="file" name="" id="">
<script type="text/javascript">
$("input")[0].onchange = function(){
var reader = new FileReader();
reader.readAsDataURL(this.files[0]);
reader.onload = function(){
console.log(reader.result);
} }
</script>
可以获取文件地址base64形式(不是很了解),但是长度过长,由于是想利用localStoragr储存,储存不了太长,所以不可行
3.利用window.URL.createObjectURL()获取
<input type="file" name="">
<script type="text/javascript">
$("input")[0].onchange = function(){
var url = window.URL.createObjectURL($(this)[0].files[0]);
console.log(url);
}
</script>
获得的是blob形式的地址,但是每次重启浏览器后的通个文件的blob的值是不一样的,所以无法实现长久储存的效果,不可行
4.利用浏览器会在标签的地址前面自动补全当前js文件所连接的html文件的文件路径的原理
var url = "uploadMusic/" + this.files[0].name;
直接将地址写为html所在文件的该文件所在的子文件加名字即可,局限性:音频视频必须放在html同个文件夹中
总结:浏览器保存本地文件的想法不可行,因为浏览器要防止网页恶意读取用户客户端文件,没有意义,玩玩还行
Video/audio标签的一些基础使用心得的更多相关文章
- html5 video/audio 标签
一般来说推荐使用,第三方的媒体播放库[例如 videojs 等],这些库的ui界面,js控制都已写好,功能也扩展的比较丰富 ,直接参考文档使用更加的高效! 这里还是 记录一下 html 原生 vide ...
- html5media.js 让浏览器兼容<Video><Audio> 标签
介绍:https://html5media.info/ 项目:https://github.com/etianen/html5media Wiki:https://github.com/etianen ...
- html5之音频、视频(video&audio)
音频&视频 本篇为本人的学习笔记. 在Html5之前,浏览器对于视频和音频的处理并没有一个标准.因此在网页中看到的视频,都是通过第三插件的方式嵌入的,如:QuickTime.RealPlaye ...
- <video>和<audio>标签
一.<video>基本格式: <video width=" " heigh="" src=""> </vide ...
- <video>和<audio>标签,对视频和音频的支持
H5新增了<video>和<audio>标签,提供对视频和音频的支持 <audio>的属性与<video>属性相同 <video> vide ...
- html5中的video标签和audio标签
不管是否承认,flash早已不像过往那样如日中天了.亚马逊全面放弃flash.苹果放弃flash.安卓也放弃了移动端的flash支持.事实上flash已经不太适合web开发了,因为HTML5中的vid ...
- video标签、audio标签
1.video标签 <video src="nans.mp4" controls="controls" autoplay="autoplay& ...
- video/audio在ios/android上播放兼容
1.audio自动播放 <audio src='xxx.mp3' autoplay></audio> 上面是audio标签autoplay属性是自动播放,但是在安卓部分浏览器和 ...
- 论HTML5 Audio 标签歌词同步的实现
HTML5草案里面其实有原生的字幕标签(<track> Tag)的,但使用的是vtt格式的文件,非常规的字幕(.sub, .srt)或歌词文件(.lrc). 用法如下(代码来自W3Scho ...
随机推荐
- 2019年牛客多校第一场 B题 Integration 数学
题目链接 传送门 思路 首先我们对\(\int_{0}^{\infty}\frac{1}{\prod\limits_{i=1}^{n}(a_i^2+x^2)}dx\)进行裂项相消: \[ \begin ...
- 2019杭电多校 hdu6659 Acesrc and Good Numbers
http://acm.hdu.edu.cn/showproblem.php?pid=6659 题意:给你d,x,让求满足f(d,n)=n的最大n(n<=x),其中f(d,n)表示数字d在从1到n ...
- Codeforces 939 D Love Rescue
Love Rescue 题意:Valya 和 Tolya 是一对情侣, 他们的T恤和头巾上都有小写字母,但是女朋友嫌弃男朋友上T恤上的字不和她的头巾上的字一样,就很生气, 然后来了一个魔法师, 它可以 ...
- 牛客网暑期ACM多校训练营(第三场) C Shuffle Cards 平衡树 rope的运用
链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 Eddy likes to play cards game since there are al ...
- github 授权登录教程与如何设计第三方授权登录的用户表
需求:在网站上想评论一篇文章,而评论文章是要用户注册与登录的,那么怎么免去这麻烦的步骤呢?答案是通过第三方授权登录.本文讲解的就是 github 授权登录的教程. 效果体验地址:http://biao ...
- ubuntu下创建定时任务的两种方式及常见问题解决方案
创建定时任务的目的就是摆脱人为对程序重复性地运行. 0. 首先用下面的指令检查你是否安装crontab, crontab -l 如果本身就有的话,那么出现如下指令 LC_CTYPE="zh_ ...
- Linux基础Day001-001章
运维工作职责:(运行和维护服务器) 1.数据不能丢失, 2.保障网站7*24H正常运行,--一直运行; 3.用户体验要好,--打开网站速度要快 服务器核心硬件(硬盘,内存,CPU) 尺寸: 1U-4. ...
- IDEA中创建maven web项目
本文将带你一路从IDEA中maven的配置到创建maven web项目,掌握IDEA中maven的使用. 一.IDEA中配置maven 开发中一般我们使用自己下载的maven,不使用IDEA工具自带的 ...
- Python(Head First)学习笔记:四
4 持久存储:文件存储.读写 数据保存到文件:在学习的过程中出现了一个问题,老是报一个错:SyntaxError: invalid syntax: 这个是语法错误,后来搜了下才知道是python2.7 ...
- Java并发笔记——单例与双重检测
单例模式可以使得一个类只有一个对象实例,能够减少频繁创建对象的时间和空间开销.单线程模式下一个典型的单例模式代码如下: ① class Singleton{ private static Single ...