HTML5 中的视频音频使用详解

发布于 2024-06-18 12:30:46 字数 13822 浏览 23 评论 0

一、video


1.1 video 支持视频格式


  • 常见的视频格式
    • 视频的组成部分:画面、音频、编码格式
    • 视频编码: H.264TheoraVP8(google 开源)
  • HTML5 支持的视频格式:
    • Ogg
      • 带有 Theora 视频编码+ Vorbis 音频编码的 Ogg 文件
        • 支持的浏览器: FCO
    • MEPG4
      • 带有 H.264 视频编码+ AAC 音频编码的 MPEG4 文件
      • 支持的浏览器: SC
    • WebM
      • 带有 VP8 视频编码+ Vorbis 音频编码的 WebM 格式
      • 支持的浏览器: IFCO
      • 劣势:视频少、转码器几乎没有,不好转码
  • 想要 video 能自动填充慢父 div 的大小,只要给 video 标签加上 style="width= 100%; height=100%; object-fit: fill" 即可

1.2 标签原型


  • 指定一种视频格式,不能播就提示
<video id="media" src="examp.mp4" width="500" 
poster="examp1.jpg" >您的浏览器不支持 video</video>
  • 给定多种视频格式,浏览器根据自身支持程度选择播放哪一种
  • 注意:多个 source 标签,浏览器会从第一个开始识别,如果第一个不被识别,则会继续识别第二个;如果第一个识别成功,则会直接播放第一种格式视频
<video controls = “controls”>

<source src=”1.mp4” type=”video/mp4” /> //src 属性写到 source 标签中,要指定视频的 type 类型,例如 MP4 的即为 type=“video/mp4”

<source src = “2.ogg” type=”video/ogg” /> //ogg 格式

<source src=”3.webm” type=”video/webm” /> //webm 格式

</video>

1.3 重要的 video 标签属性


属性(常用)功能描述
controlscontrols是否显示播放控件
autoplayautoplay设置是否打开浏览器后自动播放
widthPilex(像素)设置播放器的宽度
heightPilex(像素)设置播放器的高度
looploop设置视频是否循环播放(即播放完后继续重新播放)
preloadpreload设置是否等加载完再播放
srcurl设置要播放视频的 url 地址
posterimgurl设置播放器初始默认显示图片
autobufferautobuffer设置为浏览器缓冲方式,不设置 autoply 才有效
  • API 属性
属性描述
audioTracks返回表示可用音轨的 AudioTrackList 对象
buffered返回表示音频/视频已缓冲部分的 TimeRanges 对象
controller返回表示音频/视频当前媒体控制器的 MediaController 对象
crossOrigin设置或返回音频/视频的 CORS 设置
currentSrc返回当前音频/视频的 URL
currentTime设置或返回音频/视频中的当前播放位置(以秒计)
defaultMuted设置或返回音频/视频默认是否静音
defaultPlaybackRate设置或返回音频/视频的默认播放速度
duration返回当前音频/视频的长度(以秒计)
ended返回音频/视频的播放是否已结束
error返回表示音频/视频错误状态的 MediaError 对象
mediaGroup设置或返回音频/视频所属的组合(用于连接多个音频/视频元素)
muted设置或返回音频/视频是否静音
networkState返回音频/视频的当前网络状态
paused设置或返回音频/视频是否暂停
playbackRate设置或返回音频/视频播放的速度
played返回表示音频/视频已播放部分的 TimeRanges 对象
readyState返回音频/视频当前的就绪状态
seekable返回表示音频/视频可寻址部分的 TimeRanges 对象
seeking返回用户是否正在音频/视频中进行查找
startDate返回表示当前时间偏移的 Date 对象
textTracks返回表示可用文本轨道的 TextTrackList 对象
videoTracks返回表示可用视频轨道的 VideoTrackList 对象
volume设置或返回音频/视频的音量
  • 常用 API 属性
    • duration :返回当前音频/视频的长度(以秒计)
    • paused :设置或返回音频/视频是否暂停
    • currentTime :设置或返回音频/视频中的当前播放位置(以秒计)
    • ended :返回音频/视频的播放是否已结束

    1.4 Video API


1.4.1 Video 方法


API事件说明
playvideo.play(); 播放视频
pausevideo.pause(); 暂停播放视频
loadvideo.load(); 将全部属性回复默认值,视频恢复重新开始状态
canPlayTypevar support = videoid.canPlayType(‘video/mp4′);

判断浏览器是否支持当前类型的视频格式

返回值:
空字符串:不支持 Maybe:可能支持 Probably:完全支持
  • 常用方法
    • play() :开始播放音频/视频
    • pause() :暂停当前播放的音频/视频

1.4.2 网络状态


  • 获取 video 对象
    Media = document.getElementById("media");
  • Media.currentSrc;
    • 返回当前资源的 URL
  • Media.src = value;
    • 返回或设置当前资源的 URL
  • Media.canPlayType(type);
    • 是否能播放某种格式的资源
  • Media.networkState;
    • 0.此元素未初始化
    • 1.正常但没有使用网络
    • 2.正在下载数据
    • 3.没有找到资源
  • Media.load();
    • 重新加载 src 指定的资源
  • Media.buffered;
    • 返回已缓冲区域,TimeRanges
  • Media.preload;
    • none:不预载
    • metadata:预载资源信息
    • auto:

1.4.3 准备状态


  • Media.readyState
  • Media.seeking;
    • 是否正在 seeking

1.4.4 回放状态


  • Media.currentTime = value;
    • 当前播放的位置,赋值可改变位置
  • Media.startTime;
    • 一般为 0,如果为流媒体或者不从 0 开始的资源,则不为 0
  • Media.duration;
    • 当前资源长度 流返回无限
  • Media.paused;
    • 是否暂停
  • Media.defaultPlaybackRate = value;
    • 默认的回放速度,可以设置
  • Media.playbackRate = value;
    • 当前播放速度,设置后马上改变
  • Media.played;
    • 返回已经播放的区域,TimeRanges,关于此对象见下文
  • Media.seekable;
    • 返回可以 seek 的区域 TimeRanges
  • Media.ended;
    • 是否结束
  • Media.autoPlay;
    • 是否自动播放
  • Media.loop;
    • 是否循环播放
  • Media.play();
    • 播放
  • Media.pause();
    • 暂停

1.4.5 视频控制


  • Media.controls;//是否有默认控制条
  • Media.volume = value; //音量
  • Media.muted = value; //静音
  • TimeRanges(区域) 对象
  • TimeRanges.length; //区域段数
  • TimeRanges.start(index) //第 index 段区域的开始位置
  • TimeRanges.end(index) //第 index 段区域的结束位置

1.4.6 相关事件


  • 首先绑定事件的话可以通过 js 中的 addEventListener 方法来绑定事件
事件说明
loadstart客户端开始请求数据
progress客户端正在请求数据
suspend延迟下载
abort客户端主动终止下载(不是因为错误引起)
loadstart客户端开始请求数据
progress客户端正在请求数据
error请求数据时遇到错误
stalled网速失速
playplay() 和 autoplay 开始播放时触发
pausepause() 触发
loadedmetadata成功获取资源长度
loadeddata-
waiting等待数据,并非错误
playing开始回放
canplay可以播放,但中途可能因为加载而暂停
canplaythrough可以播放,歌曲全部加载完毕
seeking寻找中
seeked寻找完毕
timeupdate播放时间改变
ended播放结束
ratechange播放速率改变
durationchange资源长度改变
volumechange音量改变
  • 常用事件
    • oncanplay :当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。
    • ontimeupdate : 当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。
    • onended :当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。

1.4.7 其他

  • 全屏:
    • element.webkitRequestFullScreen(); ( webkit)
    • element.mozRequestFullScreen(); (Firefox )
    • element.requestFullscreen(); (W3C )
  • 退出全屏:
    • document.webkitCancelFullScreen() ; (webkit )
    • document.mozCancelFullScreen() ; (Firefox)
    • document.exitFullscreen(); (W3C)

二、audio


2.1 audio 格式


  • 常见的音频格式
    • 音频编码: ACCMP3Vorbis
  • HTML5 支持的音频格式:
    • Ogg 免费 支持的浏览器: CFO
    • MP3 收费 支持的浏览器: ICS
    • Wav 收费 支持的浏览器: FOS

2.2 audio 标签中的一些常用属性

属性属性值注释
srcurl播放的音乐的 url 地址(火狐只支持 ogg 的音乐,而 IE9 只支持 MP3 格式的音乐。chrome 貌似全支持)
preloadpreload预加载(在页面被加载时进行加载或者说缓冲音频),如果使用了 autoplay 的话那么该属性失效。
looploop循环播放
controlscontrols是否显示默认控制条(控制按钮)
autoplayautoplay自动播放
  • 对于音乐格式的支持
音频格式ChromeFirefoxIE9OperaSafari
OGG支持支持支持不支持不支持
MP3支持不支持支持不支持支持
WAV不支持支持不支持支持不支持
  • audio 可通过 new 来创建。也可以通过用 document 来获取
//通过 new 关键字来创建 Audio 对象
var Music = new Audio("test.mp3");

//通过 document 来获取已经存在的 Audio 对象
var Music = document.getElementById("audio");
//当然这里也可以使用 document.getElementsByClassName('className') 等其他的方法来获取。

2.3 api 所提供的对 audio 标签操作的一些属性和方法


属性注释
duration获取媒体文件的总时长,以 s 为单位,如果无法获取,返回 NaN
paused如果媒体文件被暂停,那么 paused 属性返回 true,反之则返回 false
ended如果媒体文件播放完毕返回 true
muted用来获取或设置静音状态。值为 boolean
volume控制音量的属性值为 0-1;0 为音量最小,1 为音量最大
startTime返回起始播放时间
error返回错误代码,为 uull 的时候为正常。否则可以通过 Music.error.code 来获取
currentTime用来获取或控制当前播放的时间,单位为 s。
currentSrc以字符串形式返回正在播放或已加载的文件

2.4 常用的控制用的函数


函数作用
load()加载音频、视频软件
play()加载并播放音频、视频文件或重新播放暂停的的音频、视频
pause()暂停出于播放状态的音频、视频文件
canPlayType(obj)测试是否支持给定的 Mini 类型的文件

2.5 audio 标签 API 中的常用事件


  • 首先绑定事件的话可以通过 js 中的 addEventListener 方法来绑定事件
事件名称事件作用
loadstart客户端开始请求数据
progress客户端正在请求数据(或者说正在缓冲)
playplay() 和 autoplay 播放时
pausepause() 方法促发时
ended当前播放结束
timeupdate当前播放时间发生改变的时候。播放中常用的时间处理
canplaythrough歌曲已经载入完全完成
canplay缓冲至目前可播放状态。

其实 videoapiaudio 几乎一致。稍稍有点不同。所以基本上会了一个其他的也就都会了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

白龙吟

暂无简介

0 文章
0 评论
611 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文