HTML5网页多媒体( 音频,视频,旧版本浏览器提示,格式兼容,多媒体标签属性)
4. 网页多媒体
多媒体 embed(会使用)
embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
<embed src="http://player.youku.com/player.php/sid/XMTI4MzM2MDIwOA==/v.swf" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>
4.1. 音频
- 定义音频播放组件
<audio src="要播放的音频文件"></audio>
4.2. 视频
- 定义播放视频组件
<video src="要播放的视频文件"></video>
4.3. 旧版本浏览器提示
- 如果HTML中遇到不能识别的标签,就会将该标签当做DIV(块级元素)
- 那么video中的innerHTML也就会直接显示在界面上
- 利用这个特点我们可以实现不支持video标签的浏览器提示
<video src="demo.mp4"><!-- 如果浏览器不识别video标签,以下内容可以直接显示在浏览器上 --><p>抱歉,您的浏览器不支持视频播放!</p>
</video>
4.4. 格式兼容
- 每个浏览器的音视频格式支持不同(版权问题)
- 需要兼容更多的浏览器,可以通过定义多个
<source>
的方式实现 - html解析过程中会找其中第一个能认识的格式播放,一旦找到认识的视频格式,就不会再往后找了
<video controls width="500"><!-- 分析第一个source格式是否支持,如果支持则加载该文件,不支持继续往下解析 --><source src="chrome.mp4"><source src="chrome.ogv"><source src="chrome.webm"><p>抱歉,您的浏览器不支持视频播放!</p>
</video>
- 因此不管是audio还是video都不要直接设置标签的src
4.5. 多媒体标签属性
属性 | 含义 |
---|---|
controls | 决定是否显示控制菜单 |
autoplay | 自动播放 |
loop | 循环播放 |
height/width | 定义播放器的宽高,只会在视频标签中生效 |
preload | 预加载 是否在页面加载完成并且没有开始播放时就开始加载文件,如果有自动播放属性则该属性无意义 |
4.6. 自定义播放器外观
- 隐藏原生的控制菜单,也就是删除标签中的controls属性
- 自己设计一套界面控制元素,比如播放按钮,音量控制开关之类
- 为每个不同的控制元素注册对应的事件
- 在事件中通过视频元素的API实现自定义播放器的效果
- 具体的多媒体元素API表:
4.6.1. 方法
方法 | 描述 |
---|---|
addTextTrack() | 向音频/视频添加新的文本轨道 |
canPlayType() | 检测浏览器是否能播放指定的音频/视频类型 |
load() | 重新加载音频/视频元素 |
play() | 开始播放音频/视频 |
pause() | 暂停当前播放的音频/视频 |
4.6.2. 属性
属性 | 描述 |
---|---|
audioTracks | 返回表示可用音轨的 AudioTrackList 对象 |
autoplay | 设置或返回是否在加载完成后随即播放音频/视频 |
buffered | 返回表示音频/视频已缓冲部分的 TimeRanges 对象 |
controller | 返回表示音频/视频当前媒体控制器的 MediaController 对象 |
controls | 设置或返回音频/视频是否显示控件(比如播放/暂停等) |
crossOrigin | 设置或返回音频/视频的 CORS 设置 |
currentSrc | 返回当前音频/视频的 URL |
currentTime | 设置或返回音频/视频中的当前播放位置(以秒计) |
defaultMuted | 设置或返回音频/视频默认是否静音 |
defaultPlaybackRate | 设置或返回音频/视频的默认播放速度 |
duration | 返回当前音频/视频的长度(以秒计) |
ended | 返回音频/视频的播放是否已结束 |
error | 返回表示音频/视频错误状态的 MediaError 对象 |
loop | 设置或返回音频/视频是否应在结束时重新播放 |
mediaGroup | 设置或返回音频/视频所属的组合(用于连接多个音频/视频元素) |
muted | 设置或返回音频/视频是否静音 |
networkState | 返回音频/视频的当前网络状态 |
paused | 设置或返回音频/视频是否暂停 |
playbackRate | 设置或返回音频/视频播放的速度 |
played | 返回表示音频/视频已播放部分的 TimeRanges 对象 |
preload | 设置或返回音频/视频是否应该在页面加载后进行加载 |
readyState | 返回音频/视频当前的就绪状态 |
seekable | 返回表示音频/视频可寻址部分的 TimeRanges 对象 |
seeking | 返回用户是否正在音频/视频中进行查找 |
src | 设置或返回音频/视频元素的当前来源 |
startDate | 返回表示当前时间偏移的 Date 对象 |
textTracks | 返回表示可用文本轨道的 TextTrackList 对象 |
videoTracks | 返回表示可用视频轨道的 VideoTrackList 对象 |
volume | 设置或返回音频/视频的音量 |
4.6.3. 事件
事件 | 描述 |
---|---|
abort | 当音频/视频的加载已放弃时 |
canplay | 当浏览器可以播放音频/视频时 |
canplaythrough | 当浏览器可在不因缓冲而停顿的情况下进行播放时 |
durationchange | 当音频/视频的时长已更改时 |
emptied | 当目前的播放列表为空时 |
ended | 当目前的播放列表已结束时 |
error | 当在音频/视频加载期间发生错误时 |
loadeddata | 当浏览器已加载音频/视频的当前帧时 |
loadedmetadata | 当浏览器已加载音频/视频的元数据时 |
loadstart | 当浏览器开始查找音频/视频时 |
pause | 当音频/视频已暂停时 |
play | 当音频/视频已开始或不再暂停时 |
playing | 当音频/视频在已因缓冲而暂停或停止后已就绪时 |
progress | 当浏览器正在下载音频/视频时 |
ratechange | 当音频/视频的播放速度已更改时 |
seeked | 当用户已移动/跳跃到音频/视频中的新位置时 |
seeking | 当用户开始移动/跳跃到音频/视频中的新位置时 |
stalled | 当浏览器尝试获取媒体数据,但数据不可用时 |
suspend | 当浏览器刻意不获取媒体数据时 |
timeupdate | 当目前的播放位置已更改时 |
volumechange | 当音量已更改时 |
waiting | 当视频由于需要缓冲下一帧而停止 |
// 获取界面上的video元素,所有的操作必须通过它实现
var video = document.getElementById('video');
var btn_play = document.getElementById('btn_play');
// 注册点击事件
// addEventListener 用于注册事件, 将事件属性的on去掉 作为第一个参数传入
btn_play.addEventListener('click', function() {video.play();btn_play.disabled = true;btn_pause.disabled = false;
});
var btn_pause = document.getElementById('btn_pause');
btn_pause.addEventListener('click', function() {video.pause();btn_play.disabled = false;btn_pause.disabled = true;
});
var btn_muted = document.getElementById('btn_muted');
btn_muted.addEventListener('click', function() {// 交互变化true或falsevideo.muted = !video.muted;btn_muted.innerHTML = video.muted ? "取消静音" : "静音";
});
var volume = document.getElementById('volume');
volume.addEventListener('change', function(e) {// 拿一下当前volume的值video.volume = volume.value;
});
var btn_speed_up = document.getElementById('btn_speed_up');
btn_speed_up.addEventListener('click', function(e) {// 加速video.playbackRate += 0.1;
});
var btn_speed_down = document.getElementById('btn_speed_down');
btn_speed_down.addEventListener('click', function(e) {// 减速video.playbackRate -= 0.1;
});
var btn_forward = document.getElementById('btn_forward');
btn_forward.addEventListener('click', function(e) {// 前进5秒video.currentTime += 5;
});
var btn_back = document.getElementById('btn_back');
btn_back.addEventListener('click', function(e) {// 后退5秒video.currentTime -= 5;
});// 注册视频播放状态变化事件
video.addEventListener('timeupdate', function() {// console.log(1111);progress.value = (video.currentTime / video.duration) * 100;
});
4.7. 全屏 API
- HTML5中提供了可以通过JS实现网页全屏的效果
- 具体的方式就是通过特定元素的
requestFullScreen
方法实现 - 由于在不同浏览器中该方法需要加上特定前缀
- 退出全屏通过
exitFullScreen
方法
// 全屏
function fullScreen(element) {if (element.requestFullScreen) {element.requestFullScreen();} else if (element.webkitRequestFullScreen) {element.webkitRequestFullScreen()} else if (element.mozRequestFullScreen) {element.mozRequestFullScreen()} else if (element.oRequestFullScreen) {element.oRequestFullScreen()} else if (element.msRequestFullScreen) {element.msRequestFullScreen()}
}
var btnFullScreen = document.getElementById('btn_fullscreen');
btnFullScreen.addEventListener('click', function() {fullScreen(video);// fullScreen(document.body);
});
4.8. SVG 了解*
- iframe的作用就是在网页中挖个坑,在这个坑里再展示一个页面
- svg本身也是文档 所以可以使用iframe的方式载入
HTML5网页多媒体( 音频,视频,旧版本浏览器提示,格式兼容,多媒体标签属性)相关推荐
- android语音播放工具类,Android开发之MediaPlayer多媒体(音频,视频)播放工具类
本文实例讲述了Android开发之MediaPlayer多媒体(音频,视频)播放工具类.分享给大家供大家参考,具体如下: package com.android.imooc.chat; import ...
- 两个mp3文件合成 php,两个音频合成一个 音频合成软件/音频视频合成软件合并不同格式为一个音频文件...
怎么将两个音频合成一个音频文件,嗯~ o(* ̄▽ ̄*)o ,又是一个老生常谈的话题,但既然是提到了自然是再给大伙演示一下,那就使用一个比较简单的音频合成软件/音频视频合成软件合并不同格式为一个音频文件 ...
- html5视频播放怎么结束,html5设置或返回音频/视频是否应该在结束时再次播放的属性loop...
实例 将视频设置为循环播放:myVid=document.getElementById("video1");myVid.loop=true; 定义和用法 loop 属性设置或返回音 ...
- HTML5媒体(音频/视频)
摘要: 在HTML5出现之前,web媒体大部分通过Flash来实现.这种方式造成了文件大加载慢,影响网站性能,开发难度高,维护麻烦,不易扩展等.这就导致HTML5自己开始支持媒体功能.HTML5 DO ...
- 解决html5语意标签在IE低版本浏览器下的兼容问题:
方法一:手动改写. 1.在body中写入h5语意标签,这里用nav标签举例子:<nav></nav> 2.在js中手动创建h5的语意标签:document.createElem ...
- html来自网页的消息,win7系统ie浏览器提示:来自网页的消息的解决方法
无论谁在使用电脑的时候都可能会发现ie浏览器提示:来自网页的消息的问题,ie浏览器提示:来自网页的消息让用户们很苦恼,这是怎么回事呢,ie浏览器提示:来自网页的消息有什么简便的处理方式呢,其实只要依照 ...
- html5网页怎么自动下滑动,360浏览器在浏览网页时自动下滑怎么办 360浏览器在浏览网页时自动下滑解决方式一览...
最近,小编在使用360浏览器浏览网页的时候,有时候会出现网页自动往下滑,用鼠标拉也拉不回去,网页依然往下滑,那么,电脑网页打开浏览器就自动往下滑是怎么回事?遇到这个问题该怎么办?那么现在小编就给大家讲 ...
- Bilibili 网页版下载视频 B站下载MP4格式视频(不用下载工具)
博主是为了给家里老人下载戏曲,一开始是单个单个解析然后下载,想多下载一些,然后用了批量方法下载很好用 通过网页版解析工具 解析单个视频 获得下载地址 复制视播放地址,如,复制播放视频时,上方的地址 然 ...
- 解决网页百度地图API在UC浏览器上不兼容情况
百度地图api网页端使用UC浏览器开启鼠标滚轮放大缩小功能时候会出现页面滚动问题 在script中加入: document.onmousewheel=function (e) {e= e || win ...
- 亲测成功解决Typora旧版本无法使用提示需要更新的问题
参考视频:[typora]This beta version of Typora is expired 解决方法之一_哔哩哔哩_bilibili *使用视频方法可以成功使用,但是一开始我改了typor ...
最新文章
- Jfinal集成Spring插件
- 【Network Security!】虚拟化架构与系统部署
- 西门子S7以太网通讯协议
- Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)
- 008 selenium html报告
- 【Revit API】调用Revit内部命令PostableCommand
- 评论python编码文章《立即停止使用 setdefaultencoding('utf-8'), 以及为什么》
- 前台文件PHP完善步骤,ThinkPHP使用步骤
- 一篇文章弄懂 JavaScript 中的 import
- ElasticSearch基础之批量操作(mget+mbulk)
- 51NOD-1028 大数乘法V2【大数】
- svn之回滚到指定版本
- java 微信 图灵机器人_使用图灵api创建微信聊天机器人
- 【IT之路】连接MySQL遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)问题
- wps云盘和zotero的结合(一)
- 02、alex 说过“普通运维人员就是秋后的蚂蚱”
- Python爬虫初级(十一)—— Selenium 详解
- 基于电商直播SDK快速实现一个淘宝直播APP【内附源码】
- 雷电2接口_中国连城 | 总结关于USB、TypeC、雷电接口的冷知识
- 以太网通信连接不上自检步骤