王无敌 發表於 2022-12-12 10:01:00

前端开发系列039-基础篇之Video基础

<blockquote>
<p>本文简单介绍HTML5中的video标签,包括video元素的简单介绍、基本使用以及常用事件和属性。</p>
</blockquote>
<h2 id="一标签介绍">一、标签介绍</h2>
<p>HTML5 规定了一种通过 Video 元素来包含视频的标准方法。</p>
<p>Video标签用于在浏览器中提供视频控件来播放视频,示例为:<code>&lt;video src="movie.ogg" controls="controls"&gt;&lt;/video&gt;</code>,其中controls 属性提供添加<strong>播放</strong>、<strong>暂停</strong>和<strong>音量</strong>等控制,如果当前浏览器不支持video元素则显示video标签之间的内容。</p>
<p><strong>video标签的主要属性</strong></p>
<p><span class="prop">height</span>    约束视频的高度。</p>
<p><span class="prop">src</span>       规定要播放的视频的 URL。</p>
<p><span class="prop">autoplay</span>规定视频就绪后马上开始播放(自动播放视频)。</p>
<p><span class="prop">width</span>   约束视频的宽度。(<strong>注意</strong>:<code>无法通过缩小视频的宽高来压缩视频</code>)</p>
<p><span class="prop">loop</span>      规定当视频结束后将重新开始播放 , 如果设置该属性,则视频将循环播放。</p>
<p><span class="prop">preload</span>   规定是否在页面加载后载入视频,如果设置了 autoplay 属性,则忽略该属性。</p>
<p><span class="prop">muted</span>   规定视频的音频输出应该被静音,在高版本浏览器中,静音可以保证视频自动播放。</p>
<p><span class="prop">controls</span>规定浏览器应该为视频提供播放控件包括:播放 暂停 定位 音量 全屏切换 字幕等。</p>
<p><strong>preload属性的取值有三种情况</strong></p>
<p><code>auto</code> - 当页面加载后载入整个视频</p>
<p><code>meta</code> - 当页面加载后只载入元数据</p>
<p><code>none</code> - 当页面加载后不载入视频</p>
<p><strong>Video元素支持三种视频格式</strong></p>
<p><code>Ogg</code> = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件</p>
<p><code>WebM</code> = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件</p>
<p><code>MPEG4</code> = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件</p>
<div class="tip">Internet Explorer 8 不支持 video 元素</div>
<h2 id="二基本使用">二、基本使用</h2>
<p>video标签的使用方式相对简单,只需要在页面中指定位置插入video标签并设置必要的属性即可,下面给出一个简短的代码示例:</p>
<pre><code class="language-html">&lt;video muted src="src/僵小鱼.mp4" autoplay="autoplay" width="600"controls="controls"&gt;
    您当前的浏览器不支持该控件,请升级浏览器!
&lt;/video&gt;
</code></pre>
<p><strong>说明</strong> 上面的代码会在页面中插入一个宽度为600的视频控件,<code>src属性</code>控制的是播放视频的资源路径,<code>autoplay</code>表示设置自动播放,<code>controls</code>表示为标签提供对用的播放控件,<code>muted属性</code>表示设置让视频静音(自动播放必须设置该属性)。</p>
<p><strong>source 元素说明</strong></p>
<p>video 元素允许多个 <code>source</code> 元素,source 元素可以链接不同的视频文件,浏览器将使用第一个可识别格式的文件,下面给出简短的代码示例。</p>
<pre><code class="language-html">&lt;video width="320" height="240" controls="controls"&gt;
          &lt;source src="movie.ogg" type="video/ogg"&gt;
          &lt;source src="movie.mp4" type="video/mp4"&gt;
          您的浏览器不支持当前控件!
&lt;/video&gt;
</code></pre>
<h2 id="三属性方法和事件">三、属性、方法和事件</h2>
<p><span style="color: rgba(17, 153, 85, 1)">video元素同样拥有属性、方法和事件</span>。</p>
<p>video元素的方法包括<code>播放play()</code>、<code>暂停pause()</code>、<code>加载load()</code></p>
<p>video元素的属性包括<code>是否静音(muted)</code>、<code>是否自动播放(autoPlay)</code>等,可以被读取或设置。</p>
<p>video元素相关的DOM 事件还能够帮我们监听视频<code>音量改变(volumechange)</code>、<code>播放结束(ended)</code>等。</p>
<p>下面给出一个简短的代码示例,通过按钮可以来控制视频的播放、暂停和放大缩小。</p>
<pre><code class="language-html">&lt;video src="src/僵小鱼.mp4" width="600px" id="my_video"&gt;&lt;/video&gt;
&lt;div class="control-video"&gt;
    &lt;button id="play_pause"&gt;播放&lt;/button&gt;
    &lt;button id="make_big"&gt;放大&lt;/button&gt;
    &lt;button id="make_small"&gt;缩小&lt;/button&gt;
&lt;/div&gt;

&lt;script&gt;
    var media = document.getElementById("my_video");
    var playPauseBtn = document.getElementById("play_pause");
    var makeBigBtn = document.getElementById("make_big");
    var makeSmallBtn = document.getElementById("make_small");

    playPauseBtn.onclick = function () {
      if (media.paused)
      {
            this.innerHTML = "暂停";
            media.play();
      }else
      {
            this.innerHTML = "播放";
            media.pause();
      }
    };
    makeBigBtn.onclick = function () {
      media.width += 50;
    };

    makeSmallBtn.onclick = function () {
      media.width -= 50;
    }
&lt;/script&gt;
</code></pre>
<p><strong>video元素的属性列表</strong></p>
<p><span class="propT">readyState</span>         当前状态</p>
<p><span class="propT">paused</span>               是否暂停</p>
<p><span class="propT">controls</span>             是否有默认控制条</p>
<p><span class="propT">currentSrc </span>          当前资源的URL路径</p>
<p><span class="propT">src</span>                  设置或返回资源的URL</p>
<p><span class="propT">startTime</span>            开始时间,通常为0</p>
<p><span class="propT">volume</span>               音量,可以设置(<code>0~1</code>)</p>
<p><span class="propT">ended </span>               是否结束,布尔类型值</p>
<p><span class="propT">autoPlay</span>             是否自动播放,布尔类型值</p>
<p><span class="propT">loop</span>               是否循环播放,布尔类型值</p>
<p><span class="propT">muted </span>               是否静音,布尔类型值,可以设置</p>
<p><span class="propT">error</span>                错误信息,<code>null表示正常</code></p>
<p><span class="propT">buffered</span>             返回已缓冲区域,TimeRanges</p>
<p><span class="propT">seeking </span>             是否正在seeking(查找)</p>
<p><span class="propT">currentTime</span>          当前播放的位置,可以设置修改</p>
<p><span class="propT">duration</span>             当前资源长度,流则返回无限</p>
<p><span class="propT">played </span>            返回已经播放的区域,TimeRanges</p>
<p><span class="propT">seekable</span>             返回可以seek的区域 TimeRanges</p>
<p><span class="propT">defaultPlaybackRate</span>默认的回放速度,可以设置</p>
<p><span class="propT">playbackRate </span>      当前播放速度(比如可以设置为1.5倍速度),可以设置</p>
<p><span class="propT">error.code </span>          错误信息,具体的代码 <code>1-用户终止 2-网络错误 3-解码错误 4-URL无效</code></p>
<p><span class="propT">preload </span>             是否预载资源取值情况有 none:不预载 metadata:预载资源</p>
<p><span class="propT">networkState</span>         当前网络状态,结果为数值 <code>0-未初始化 1-未使用网络 2-正下载 3-没找到资源</code></p>
<p><span class="propT">TimeRanges</span>         区域对象</p>
<p><span class="propT">TimeRanges.length</span>   区域段数</p>
<p><span class="propT">TimeRanges.start(index)</span>第index段区域的开始位置</p>
<p><span class="propT">TimeRanges.end(index)</span>    第index段区域的结束位置</p>
<p><strong>video元素的方法列表</strong></p>
<pre><code>media.play();                播放视频
media.pause();               暂停视频
media.load();                重新加载src指定的资源
media.canPlayType(type);   是否能播放某种格式的资源
</code></pre>
<p><strong>说明</strong>:<code>media</code>为获取到的页面中的video标签</p>
<p><strong>video元素相关的事件</strong></p>
<pre><code>var eventTester = function(e){
    Media.addEventListener(e,function(){//.....},false);
}

eventTester("loadstart");       客户端开始请求数据
eventTester("progress");      客户端正在请求数据
eventTester("suspend");         延迟下载
eventTester("abort");         客户端主动终止下载(不是因为错误引起)
eventTester("loadstart");       客户端开始请求数据
eventTester("progress");      客户端正在请求数据
eventTester("suspend");         延迟下载
eventTester("abort");         客户端主动终止下载(不是因为错误引起),
eventTester("error");         请求数据时遇到错误
eventTester("stalled");         网速失速
eventTester("play");            play()和autoplay开始播放时触发
eventTester("pause");         pause()触发
eventTester("loadedmetadata");成功获取资源长度
eventTester("loadeddata");      成功获取数据信息
eventTester("waiting");         等待数据,并非错误
eventTester("playing");         开始回放
eventTester("canplay");         可以播放,但中途可能因为加载而暂停
eventTester("canplaythrough");可以播放,歌曲全部加载完毕
eventTester("seeking");         寻找中
eventTester("seeked");          寻找完毕
eventTester("timeupdate");      播放时间改变
eventTester("ended");         播放结束
eventTester("ratechange");      播放速率改变
eventTester("durationchange");资源长度改变
eventTester("volumechange");    音量改变
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    <div>原创文章,访问个人站点 文顶顶 以获得更好的阅读体验。</div>
<div>版权声明:著作权归作者所有,商业转载请联系文顶顶获得授权,非商业转载请注明出处。</div><br><br>
来源:https://www.cnblogs.com/wendingding/p/16975327.html
頁: [1]
查看完整版本: 前端开发系列039-基础篇之Video基础