HTML5网页多媒体( 音频,视频,旧版本浏览器提示,格式兼容,多媒体标签属性)

本文介绍了HTML5中用于网页多媒体的使用,包括音频和视频组件的定义,旧版本浏览器的提示处理,格式兼容策略,以及如何通过多媒体标签属性来自定义播放器外观,利用事件和API实现控制功能。同时提到了全屏API的应用和SVG的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 自定义播放器外观

  1. 隐藏原生的控制菜单,也就是删除标签中的controls属性
  2. 自己设计一套界面控制元素,比如播放按钮,音量控制开关之类
  3. 为每个不同的控制元素注册对应的事件
  4. 在事件中通过视频元素的API实现自定义播放器的效果
  5. 具体的多媒体元素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或false
  video.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 了解*

  1. iframe的作用就是在网页中挖个坑,在这个坑里再展示一个页面
  2. svg本身也是文档 所以可以使用iframe的方式载入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值