阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      HTML 音频/视频 DOM 参考手册

      HTML 音频/视频 DOM 参考手册

      HTML5 DOM 为 <audio><video> 元素提供了方法、属性和事件。

      这些方法、属性和事件允许您使用 JavaScript 来操作 <audio><video> 元素。

      <audio><video>是浏览器内置的播放音频或视频的元素;视频和音频编解码器用来处理视频和音频,不同的编解码器提供不同级别的压缩率和分辨率;

      一个容器封装格式(多媒体容器格式)用来存储和传输编码后的视频和音频(如果视频带有音轨则同时;编解码器和多媒体容器格式有非常多的组合;尽管只有很少部分和WEB相关;

      由于专利的问题,不同的浏览器对HTML5的video和audio有不同的规范和实现;WEB上的媒体格式领域受到在包括美国、欧盟在内的许多国家的专利法的保护和制约;

      本文将讨论了不同的编解码器和封装格式在WEB上的各种组合,包括在桌面设备和其他设备上的浏览器的支持情况。

      想要在HTML5中播放视频,并且主流浏览器的最新版本中支持良好;可以使用WebM 和 MPEG H.264 AAC 编码格式;像下面一样使用<source>元素

      <video controls>
        <source src="somevideo.webm" type="video/webm">
        <source src="somevideo.mp4" type="video/mp4">
        I'm sorry; your browser doesn't support HTML5 video in WebM with VP8/VP9 or MP4 with H.264.
        <!-- You can embed a Flash player here, to play your mp4 video in older browsers -->
      </video>
      

      Ogg Theora Vorbis

      Ogg容器格式使用Theora视频编解码器和 Vorbis音频编解码器。在的桌面和移动端的Gecko(Firefox),Chrome和Opera;Safari(非IOS)可以通过添加扩展支持;但是不支持IE

      WebM在可选的情况下是优选项;因为它能提供更高的压缩比,并且被更多的浏览器所支持;而Ogg容器格式主要用于支持低版本的浏览器(比如: Firefox 3.5/3.6就不支持WebM,但是支持Ogg)

      Ogg的授权情况和WebM类似

      Gecko提供下面3种Ogg文件格式的MIME type:

      • audio/ogg
        • 一个只包含音频的Ogg文件
      • video/ogg
        • 一个包含视频或音频的Ogg文件
      • application/ogg
        • 一个不指定内容的Ogg文件,当你不知道内容的时候可以选择

      Ogg Opus

      Ogg容器可以通过使用Opus codec包含音频编解码器;

      用来支持Gecko 15.0 (Firefox 15.0 / Thunderbird 15.0 / SeaMonkey 2.12) 或更新的版本

      Ogg FLAC

      Ogg容器可以通过使用FLAC codec包含音频编解码器;

      用来支持Gecko 51.0 (Firefox 51.0 / Thunderbird 51.0 / SeaMonkey 2.48) 或更新的版本, 但只适用于桌面浏览器

      MP4 FLAC

      从Firefox 51开始,你就可以使用FLAC编解码器播放MP4了,不管你有没有安装 MediaSource Extensions和DRM 扩展支持。

      MP3

      MP3 audio 编码对应浏览器<audio>的支持。

      其中Firefox/Firefox for Android/Firefox OS需要操作系统本身提供了MP3的解码器;而IE,Chrome,Safari则原生支持

      WAVE PCM

      WAVE容器使用PCM音频编解码器;桌面和移动Gecko (Firefox) a、 Safari都支持,WAVE容器中的文件后缀为 “.wav”。

      Gecko提供下面4种WAVE文件格式的MIME type:

      • audio/wave (preferred; does not work in Chrome)
      • audio/wav
      • audio/x-wav
      • audio/x-pn-wav

      FLAC

      FLAC容器格式使用 FLAC 音频编解码器 (FLAC codec);桌面端受到Gecko Firefox 51.0 (Firefox 51.0 / Thunderbird 51.0 / SeaMonkey 2.48)的支持,文件后缀为 “.flac”

      Gecko提供下面4种FLAC文件格式的MIME type:

      • audio/flac (preferred)
      • audio/x-flac

      Media Source Extensions (MSE)

      媒体源扩展(MSE)是一个W3C工作草案,计划扩展HTMLMediaElement以允许JavaScript生成用于重放的媒体流。 允许JavaScript生成流以适应各种应用场景,如自适应流和时移实时流。 MSE支持仅限于MP4和WebM容器,但编解码器支持因底层平台而异。

      例如:可以使用JavaScript实现MPEG-DASH,同时将解码解压缩到MSE。

      时间位移(Time shifting) 功能主要是将即时内容,录制在存储器上,可以暂时离开,一定时间回来后,可以从离开的时间通过内部的重播。

      HTML 音频/视频 方法

      方法描述
      addTextTrack()向音频/视频添加新的文本轨道。
      canPlayType()检测浏览器是否能播放指定的音频/视频类型。
      load()重新加载音频/视频元素。
      play()开始播放音频/视频。
      pause()暂停当前播放的音频/视频。

      HTML 音频/视频属性

      属性描述
      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设置或返回音频/视频的音量。

      HTML 音频/视频事件

      事件描述
      abort当音频/视频的加载已放弃时触发。
      canplay当浏览器可以开始播放音频/视频时触发。
      canplaythrough当浏览器可在不因缓冲而停顿的情况下进行播放时触发。
      durationchange当音频/视频的时长已更改时触发。
      emptied当目前的播放列表为空时触发。
      ended当目前的播放列表已结束时触发。
      error当在音频/视频加载期间发生错误时触发。
      loadeddata当浏览器已加载音频/视频的当前帧时触发。
      loadedmetadata当浏览器已加载音频/视频的元数据时触发。
      loadstart当浏览器开始查找音频/视频时触发。
      pause当音频/视频已暂停时触发。
      play当音频/视频已开始或不再暂停时触发。
      playing当音频/视频在因缓冲而暂停或停止后已就绪时触发。
      progress当浏览器正在下载音频/视频时触发。
      ratechange当音频/视频的播放速度已更改时触发。
      seeked当用户已移动/跳跃到音频/视频中的新位置时触发。
      seeking当用户开始移动/跳跃到音频/视频中的新位置时触发。
      stalled当浏览器尝试获取媒体数据,但数据不可用时触发。
      suspend当浏览器刻意不获取媒体数据时触发。
      timeupdate当目前的播放位置已更改时触发。
      volumechange当音量已更改时触发。
      waiting当视频由于需要缓冲下一帧而停止时触发。
      目录
      目录