<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos player de video html5 - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/player-de-video-html5/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/player-de-video-html5/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Wed, 21 Oct 2026 12:08:38 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://webzoneware.com/wp-content/uploads/icon-webzoneware-150x150.png</url>
	<title>Arquivos player de video html5 - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/player-de-video-html5/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>HTML5 Vídeo Nativo: Guia Completo da Tag &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-html/video-nativo-html5/</link>
					<comments>https://webzoneware.com/web-academy/curso-html/video-nativo-html5/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 12:08:38 +0000</pubDate>
				<category><![CDATA[Curso de HTML & HTML5]]></category>
		<category><![CDATA[formatos de video html5]]></category>
		<category><![CDATA[legendas webvtt html5]]></category>
		<category><![CDATA[player de video html5]]></category>
		<category><![CDATA[tag video html5]]></category>
		<category><![CDATA[video nativo html]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29358</guid>

					<description><![CDATA[<p>Antes da chegada do HTML5, reproduzir um vídeo em uma página web era uma experiência fragmentada e insegura. Os usuários eram obrigados a instalar plugins proprietários pesados de terceiros — como Adobe Flash Player, QuickTime ou Silverlight —, que frequentemente travavam o navegador, consumiam bateria vorazmente e representavam brechas críticas de segurança. A introdução da [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/video-nativo-html5/">HTML5 Vídeo Nativo: Guia Completo da Tag | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">
    Antes da chegada do HTML5, reproduzir um vídeo em uma página web era uma experiência fragmentada e insegura. Os usuários eram obrigados a instalar plugins proprietários pesados de terceiros — como Adobe Flash Player, QuickTime ou Silverlight —, que frequentemente travavam o navegador, consumiam bateria vorazmente e representavam brechas críticas de segurança. A introdução da tag <code>&lt;video&gt;</code> no HTML5 transformou o conteúdo audiovisual em um <strong>cidadão de primeira classe no navegador</strong>, permitindo reprodução com aceleração por hardware da GPU, suporte a legendas acessíveis e controle total via CSS e JavaScript.
</p>
<h2>1. Anatomia Básica do Elemento &lt;video&gt;</h2>
<p>
    No nível mais básico, você pode incorporar um player de vídeo declarando a tag acompanhada do atributo booleano <code>controls</code>, que exibe a barra nativa do navegador (reproduzir, pausar, volume, tela cheia e Picture-in-Picture):
</p>
    <div class="wzw-ide-card" id="wzw-code-41285" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">4 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-41285', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-41285', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;video</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;meu-video.mp4&quot;</span> <span class="wzw-tk-attr">controls</span> <span class="wzw-tk-attr">width</span>=<span class="wzw-tk-str">&quot;640&quot;</span> <span class="wzw-tk-attr">height</span>=<span class="wzw-tk-str">&quot;360&quot;</span> <span class="wzw-tk-attr">poster</span>=<span class="wzw-tk-str">&quot;capa-video.jpg&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Texto de fallback caso o navegador seja antigo --&gt;</span></span>
<span class="wzw-code-line">    Seu navegador não possui suporte para reprodução de vídeo nativo em HTML5.</span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/video&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;video src=&quot;meu-video.mp4&quot; controls width=&quot;640&quot; height=&quot;360&quot; poster=&quot;capa-video.jpg&quot;&gt;
    &lt;!-- Texto de fallback caso o navegador seja antigo --&gt;
    Seu navegador não possui suporte para reprodução de vídeo nativo em HTML5.
&lt;/video&gt;</textarea>
        </div>
    </div>
    
<h2>2. Catálogo de Atributos Essenciais da Tag &lt;video&gt;</h2>
<p>
    O comportamento da mídia é ajustado através de um conjunto de atributos declarativos:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Atributo</th>
<th>Tipo</th>
<th>Finalidade &#038; Comportamento</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>controls</code></td>
<td>Booleano</td>
<td>Exibe a interface gráfica nativa de controle (play, pause, volume, tela cheia).</td>
</tr>
<tr>
<td><code>poster</code></td>
<td>URL</td>
<td>Imagem estática exibida como capa antes do usuário iniciar a reprodução.</td>
</tr>
<tr>
<td><code>preload</code></td>
<td><code>none | metadata | auto</code></td>
<td>Define a estratégia de download prévio. Use <code>metadata</code> para poupar dados de banda.</td>
</tr>
<tr>
<td><code>autoplay</code></td>
<td>Booleano</td>
<td>Inicia o vídeo automaticamente. <strong>Requer <code>muted</code> para funcionar na web moderna!</strong></td>
</tr>
<tr>
<td><code>muted</code></td>
<td>Booleano</td>
<td>Silencia o áudio por padrão (indispensável para backgrounds e autoplay sem rejeição).</td>
</tr>
<tr>
<td><code>loop</code></td>
<td>Booleano</td>
<td>Reinicia a reprodução continuamente em loop infinito ao chegar ao final.</td>
</tr>
<tr>
<td><code>playsinline</code></td>
<td>Booleano</td>
<td>Impede que dispositivos móveis (como o Safari no iPhone) forcem a tela cheia ao dar play.</td>
</tr>
</tbody>
</table>
</div>
<div class="wzw-pro-tip">
<h4>💡 A Regra de Autoplay dos Navegadores Modernos</h4>
<p>
        Para proteger os usuários de surpresas desagradáveis com barulhos repentinos em locais públicos ou no trabalho, navegadores como Google Chrome, Safari e Edge <strong>bloqueiam o atributo <code>autoplay</code> se o áudio estiver ativado</strong>.
    </p>
<p>
        Se você deseja que um vídeo toque sozinho (como um fundo animado ou demonstração de produto), declare sempre: <code>&lt;video autoplay muted loop playsinline&gt;</code>.
    </p>
</div>
<h2>3. Compatibilidade Universal com a Tag &lt;source&gt;</h2>
<p>
    Diferentes sistemas operacionais e navegadores contam com suporte a codecs distintos. Para garantir que 100% dos seus visitantes consigam assistir sem falhas, aninhamos múltiplos elementos <code>&lt;source&gt;</code> dentro do <code>&lt;video&gt;</code>. O navegador avaliará a lista de cima para baixo e reproduzirá o primeiro formato compatível:
</p>
    <div class="wzw-ide-card" id="wzw-code-35849" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">10 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-35849', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-35849', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;video</span> <span class="wzw-tk-attr">controls</span> <span class="wzw-tk-attr">width</span>=<span class="wzw-tk-str">&quot;800&quot;</span> <span class="wzw-tk-attr">height</span>=<span class="wzw-tk-str">&quot;450&quot;</span> <span class="wzw-tk-attr">poster</span>=<span class="wzw-tk-str">&quot;capa.webp&quot;</span> <span class="wzw-tk-attr">preload</span>=<span class="wzw-tk-str">&quot;metadata&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Formato moderno WebM (VP9/Opus): Super leve para Chrome/Firefox/Edge --&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;source</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;video-aula.webm&quot;</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;video/webm; codecs=vp9,opus&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Formato padrão universal MP4 (H.264/AAC): Funciona em 100% dos dispositivos --&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;source</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;video-aula.mp4&quot;</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;video/mp4; codecs=avc1.42E01E,mp4a.40.2&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Fallback amigável com link de download direto --&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;p&gt;</span>Seu navegador não suporta este vídeo. <span class="wzw-tk-tag">&lt;a</span> <span class="wzw-tk-attr">href</span>=<span class="wzw-tk-str">&quot;video-aula.mp4&quot;</span> <span class="wzw-tk-attr">download</span><span class="wzw-tk-tag">&gt;</span>Baixe o arquivo aqui<span class="wzw-tk-tag">&lt;/a&gt;</span>.<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/video&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;video controls width=&quot;800&quot; height=&quot;450&quot; poster=&quot;capa.webp&quot; preload=&quot;metadata&quot;&gt;
    &lt;!-- Formato moderno WebM (VP9/Opus): Super leve para Chrome/Firefox/Edge --&gt;
    &lt;source src=&quot;video-aula.webm&quot; type=&quot;video/webm; codecs=vp9,opus&quot;&gt;
    
    &lt;!-- Formato padrão universal MP4 (H.264/AAC): Funciona em 100% dos dispositivos --&gt;
    &lt;source src=&quot;video-aula.mp4&quot; type=&quot;video/mp4; codecs=avc1.42E01E,mp4a.40.2&quot;&gt;

    &lt;!-- Fallback amigável com link de download direto --&gt;
    &lt;p&gt;Seu navegador não suporta este vídeo. &lt;a href=&quot;video-aula.mp4&quot; download&gt;Baixe o arquivo aqui&lt;/a&gt;.&lt;/p&gt;
&lt;/video&gt;</textarea>
        </div>
    </div>
    
<h2>4. Acessibilidade com Legendas e a Tag &lt;track&gt; (WebVTT)</h2>
<p>
    Tornar seus vídeos acessíveis para pessoas surdas, com deficiência auditiva ou para usuários que assistem sem fone no celular é um requisito ético e regulatório (WCAG 2.2). O HTML5 resolve isso nativamente com a tag <code>&lt;track&gt;</code> consumindo arquivos no formato <strong>WebVTT</strong> (<em>Web Video Text Tracks</em>, extensão <code>.vtt</code>):
</p>
    <div class="wzw-ide-card" id="wzw-code-46292" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">9 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-46292', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-46292', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;video</span> <span class="wzw-tk-attr">controls</span> <span class="wzw-tk-attr">width</span>=<span class="wzw-tk-str">&quot;720&quot;</span> <span class="wzw-tk-attr">height</span>=<span class="wzw-tk-str">&quot;405&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;source</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;apresentacao.mp4&quot;</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;video/mp4&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Legendas em Português ativas por padrão --&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;track</span> <span class="wzw-tk-attr">kind</span>=<span class="wzw-tk-str">&quot;subtitles&quot;</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;legendas-pt.vtt&quot;</span> <span class="wzw-tk-attr">srclang</span>=<span class="wzw-tk-str">&quot;pt-BR&quot;</span> <span class="wzw-tk-attr">label</span>=<span class="wzw-tk-str">&quot;Português&quot;</span> <span class="wzw-tk-attr">default</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Legendas em Inglês como opção alternativa --&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;track</span> <span class="wzw-tk-attr">kind</span>=<span class="wzw-tk-str">&quot;subtitles&quot;</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;legendas-en.vtt&quot;</span> <span class="wzw-tk-attr">srclang</span>=<span class="wzw-tk-str">&quot;en&quot;</span> <span class="wzw-tk-attr">label</span>=<span class="wzw-tk-str">&quot;English&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/video&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;video controls width=&quot;720&quot; height=&quot;405&quot;&gt;
    &lt;source src=&quot;apresentacao.mp4&quot; type=&quot;video/mp4&quot;&gt;

    &lt;!-- Legendas em Português ativas por padrão --&gt;
    &lt;track kind=&quot;subtitles&quot; src=&quot;legendas-pt.vtt&quot; srclang=&quot;pt-BR&quot; label=&quot;Português&quot; default&gt;
    
    &lt;!-- Legendas em Inglês como opção alternativa --&gt;
    &lt;track kind=&quot;subtitles&quot; src=&quot;legendas-en.vtt&quot; srclang=&quot;en&quot; label=&quot;English&quot;&gt;
&lt;/video&gt;</textarea>
        </div>
    </div>
    
<h3>Estrutura de um Arquivo WebVTT (legendas-pt.vtt):</h3>
    <div class="wzw-ide-card" id="wzw-code-14416" data-lang="text">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CODE</span>
                                <span class="wzw-ide-lines-count">7 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-14416', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-14416', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line">WEBVTT - Legendas da Aula de HTML5</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">01.000</span> --&gt; <span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">04.500</span></span>
<span class="wzw-code-line">Olá, boas-vindas à Web Academy <span class="wzw-tk-kw">do</span> Web-ZoneWare!</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">05.000</span> --&gt; <span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">00</span>:<span class="wzw-tk-num">09.200</span></span>
<span class="wzw-code-line">Hoje aprenderemos a incorporar vídeos nativos com a tag &lt;video&gt;.</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>WEBVTT - Legendas da Aula de HTML5

00:00:01.000 --&gt; 00:00:04.500
Olá, boas-vindas à Web Academy do Web-ZoneWare!

00:00:05.000 --&gt; 00:00:09.200
Hoje aprenderemos a incorporar vídeos nativos com a tag &lt;video&gt;.</textarea>
        </div>
    </div>
    
<h2>5. Controle Programático via JavaScript (HTMLMediaElement API)</h2>
<p>
    Tanto <code>&lt;video&gt;</code> quanto <code>&lt;audio&gt;</code> herdam a poderosa interface <code>HTMLMediaElement</code> do JavaScript, permitindo a construção de players totalmente personalizados:
</p>
    <div class="wzw-ide-card" id="wzw-code-86457" data-lang="javascript">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">JavaScript</span>
                                <span class="wzw-ide-lines-count">29 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-86457', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-86457', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-kw">const</span> player = document.<span class="wzw-tk-fn">querySelector</span>(<span class="wzw-tk-str">&#039;video&#039;</span>);</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// 1. Métodos de Ação</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">function</span> <span class="wzw-tk-fn">alternarReproducao</span>() {</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">if</span> (player.paused) {</span>
<span class="wzw-code-line">        player.<span class="wzw-tk-fn">play</span>();<span class="wzw-tk-comment"> // Inicia a reprodução</span></span>
<span class="wzw-code-line">    } <span class="wzw-tk-kw">else</span> {</span>
<span class="wzw-code-line">        player.<span class="wzw-tk-fn">pause</span>();<span class="wzw-tk-comment"> // Pausa a reprodução</span></span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// 2. Modificação de Velocidade (0.5x, 1.0x, 1.5x, 2.0x)</span></span>
<span class="wzw-code-line">player.playbackRate = <span class="wzw-tk-num">1.5</span>;</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// 3. Ativação do modo Picture-in-Picture (PiP)</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">if</span> (document.pictureInPictureEnabled) {</span>
<span class="wzw-code-line">    player.<span class="wzw-tk-fn">requestPictureInPicture</span>();</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// 4. Escuta de Eventos de Progresso</span></span>
<span class="wzw-code-line">player.<span class="wzw-tk-fn">addEventListener</span>(<span class="wzw-tk-str">&#039;timeupdate&#039;</span>, () =&gt; {</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">const</span> porcentagem = (player.currentTime / player.duration) * <span class="wzw-tk-num">100</span>;</span>
<span class="wzw-code-line">    console.<span class="wzw-tk-fn">log</span>(<span class="wzw-tk-str">`Progresso do vídeo: ${porcentagem.toFixed(1)}%`</span>);</span>
<span class="wzw-code-line">});</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// 5. Ação ao finalizar</span></span>
<span class="wzw-code-line">player.<span class="wzw-tk-fn">addEventListener</span>(<span class="wzw-tk-str">&#039;ended&#039;</span>, () =&gt; {</span>
<span class="wzw-code-line">    console.<span class="wzw-tk-fn">log</span>(<span class="wzw-tk-str">&#039;O vídeo foi concluído!&#039;</span>);</span>
<span class="wzw-code-line">});</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>const player = document.querySelector(&#039;video&#039;);

// 1. Métodos de Ação
function alternarReproducao() {
    if (player.paused) {
        player.play(); // Inicia a reprodução
    } else {
        player.pause(); // Pausa a reprodução
    }
}

// 2. Modificação de Velocidade (0.5x, 1.0x, 1.5x, 2.0x)
player.playbackRate = 1.5;

// 3. Ativação do modo Picture-in-Picture (PiP)
if (document.pictureInPictureEnabled) {
    player.requestPictureInPicture();
}

// 4. Escuta de Eventos de Progresso
player.addEventListener(&#039;timeupdate&#039;, () =&gt; {
    const porcentagem = (player.currentTime / player.duration) * 100;
    console.log(`Progresso do vídeo: ${porcentagem.toFixed(1)}%`);
});

// 5. Ação ao finalizar
player.addEventListener(&#039;ended&#039;, () =&gt; {
    console.log(&#039;O vídeo foi concluído!&#039;);
});</textarea>
        </div>
    </div>
    
<h2>6. Código Prático Completo: Player com Controles Personalizados</h2>
<p>
    Abaixo criamos uma interface customizada com botão play/pause dinâmico, barra de tempo em tempo real e controle de velocidade:
</p>
    <div class="wzw-ide-card" id="wzw-code-65668" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">15 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-65668', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-65668', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;wzw-video-player&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;video</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;videoDemo&quot;</span> <span class="wzw-tk-attr">poster</span>=<span class="wzw-tk-str">&quot;https://webzoneware.com/wp-content/themes/astra-child/assets/images/logo.png&quot;</span> <span class="wzw-tk-attr">preload</span>=<span class="wzw-tk-str">&quot;metadata&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;source</span> <span class="wzw-tk-attr">src</span>=<span class="wzw-tk-str">&quot;https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4&quot;</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;video/mp4&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        Seu navegador não suporta a tag video.</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/video&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;player-controls&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;button</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;btnPlayPause&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;btn-ctrl&quot;</span><span class="wzw-tk-tag">&gt;</span>▶ Play<span class="wzw-tk-tag">&lt;/button&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;progress-bar-container&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;barraProgresso&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;progress-bar-fill&quot;</span><span class="wzw-tk-tag">&gt;</span><span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;tempoDisplay&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;time-label&quot;</span><span class="wzw-tk-tag">&gt;</span>00:00<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;button</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;btnVelocidade&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;btn-ctrl&quot;</span><span class="wzw-tk-tag">&gt;</span>1.0x<span class="wzw-tk-tag">&lt;/button&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/div&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;div class=&quot;wzw-video-player&quot;&gt;
    &lt;video id=&quot;videoDemo&quot; poster=&quot;https://webzoneware.com/wp-content/themes/astra-child/assets/images/logo.png&quot; preload=&quot;metadata&quot;&gt;
        &lt;source src=&quot;https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4&quot; type=&quot;video/mp4&quot;&gt;
        Seu navegador não suporta a tag video.
    &lt;/video&gt;

    &lt;div class=&quot;player-controls&quot;&gt;
        &lt;button id=&quot;btnPlayPause&quot; class=&quot;btn-ctrl&quot;&gt;▶ Play&lt;/button&gt;
        &lt;div class=&quot;progress-bar-container&quot;&gt;
            &lt;div id=&quot;barraProgresso&quot; class=&quot;progress-bar-fill&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;span id=&quot;tempoDisplay&quot; class=&quot;time-label&quot;&gt;00:00&lt;/span&gt;
        &lt;button id=&quot;btnVelocidade&quot; class=&quot;btn-ctrl&quot;&gt;1.0x&lt;/button&gt;
    &lt;/div&gt;
&lt;/div&gt;</textarea>
        </div>
    </div>
    
    <div class="wzw-ide-card" id="wzw-code-28852" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">61 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-28852', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-28852', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line">.wzw-video-player {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">max-width</span>: <span class="wzw-tk-num">680px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0b1120</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">8px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">overflow</span>: hidden;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">position</span>: relative;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.wzw-video-player video {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 100%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">aspect-ratio</span>: 16 / 9;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: block;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#000</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.player-controls {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: flex;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">align-items</span>: center;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">gap</span>: <span class="wzw-tk-num">12px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">10px</span> <span class="wzw-tk-num">16px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0f172a</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-top</span>: <span class="wzw-tk-num">1px</span> solid <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-ctrl {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#f8fafc</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">6px</span> <span class="wzw-tk-num">12px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">4px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">cursor</span>: pointer;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-weight</span>: 600;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.85rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-ctrl<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.progress-bar-container {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">flex</span>: 1;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">8px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">4px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">overflow</span>: hidden;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">cursor</span>: pointer;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.progress-bar-fill {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 0%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: 100%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#10b981</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: width <span class="wzw-tk-num">0.1s</span> linear;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.time-label {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-family</span>: monospace;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.85rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#94a3b8</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.wzw-video-player {
    max-width: 680px;
    background-color: #0b1120;
    border: 1px solid #1e293b;
    border-radius: 8px;
    overflow: hidden;
    position: relative;
}

.wzw-video-player video {
    width: 100%;
    aspect-ratio: 16 / 9;
    display: block;
    background-color: #000;
}

.player-controls {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 16px;
    background-color: #0f172a;
    border-top: 1px solid #1e293b;
}

.btn-ctrl {
    background-color: #1e293b;
    color: #f8fafc;
    border: 1px solid #334155;
    padding: 6px 12px;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.85rem;
}

.btn-ctrl:hover {
    background-color: #334155;
}

.progress-bar-container {
    flex: 1;
    height: 8px;
    background-color: #334155;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
}

.progress-bar-fill {
    width: 0%;
    height: 100%;
    background-color: #10b981;
    transition: width 0.1s linear;
}

.time-label {
    font-family: monospace;
    font-size: 0.85rem;
    color: #94a3b8;
}</textarea>
        </div>
    </div>
    
    <div class="wzw-ide-card" id="wzw-code-69184" data-lang="javascript">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">JavaScript</span>
                                <span class="wzw-ide-lines-count">35 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-69184', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-69184', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-kw">const</span> vid = document.<span class="wzw-tk-fn">getElementById</span>(<span class="wzw-tk-str">&#039;videoDemo&#039;</span>);</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">const</span> btnPlay = document.<span class="wzw-tk-fn">getElementById</span>(<span class="wzw-tk-str">&#039;btnPlayPause&#039;</span>);</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">const</span> barra = document.<span class="wzw-tk-fn">getElementById</span>(<span class="wzw-tk-str">&#039;barraProgresso&#039;</span>);</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">const</span> lblTempo = document.<span class="wzw-tk-fn">getElementById</span>(<span class="wzw-tk-str">&#039;tempoDisplay&#039;</span>);</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">const</span> btnVel = document.<span class="wzw-tk-fn">getElementById</span>(<span class="wzw-tk-str">&#039;btnVelocidade&#039;</span>);</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// Alterna Play / Pause</span></span>
<span class="wzw-code-line">btnPlay.<span class="wzw-tk-fn">addEventListener</span>(<span class="wzw-tk-str">&#039;click&#039;</span>, () =&gt; {</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">if</span> (vid.paused) {</span>
<span class="wzw-code-line">        vid.<span class="wzw-tk-fn">play</span>();</span>
<span class="wzw-code-line">        btnPlay.textContent = <span class="wzw-tk-str">&#039;⏸ Pausar&#039;</span>;</span>
<span class="wzw-code-line">    } <span class="wzw-tk-kw">else</span> {</span>
<span class="wzw-code-line">        vid.<span class="wzw-tk-fn">pause</span>();</span>
<span class="wzw-code-line">        btnPlay.textContent = <span class="wzw-tk-str">&#039;▶ Play&#039;</span>;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">});</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// Atualiza a barra de progresso em tempo real</span></span>
<span class="wzw-code-line">vid.<span class="wzw-tk-fn">addEventListener</span>(<span class="wzw-tk-str">&#039;timeupdate&#039;</span>, () =&gt; {</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">const</span> porcentagem = (vid.currentTime / vid.duration) * <span class="wzw-tk-num">100</span>;</span>
<span class="wzw-code-line">    barra.style.width = <span class="wzw-tk-str">`${porcentagem}%`</span>;</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">const</span> mins = Math.<span class="wzw-tk-fn">floor</span>(vid.currentTime / <span class="wzw-tk-num">60</span>);</span>
<span class="wzw-code-line">    <span class="wzw-tk-kw">const</span> segs = Math.<span class="wzw-tk-fn">floor</span>(vid.currentTime % <span class="wzw-tk-num">60</span>);</span>
<span class="wzw-code-line">    lblTempo.textContent = <span class="wzw-tk-str">`${String(mins).padStart(2, &#039;0&#039;)}:${String(segs).padStart(2, &#039;0&#039;)}`</span>;</span>
<span class="wzw-code-line">});</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">// Alternador de velocidade (1x -&gt; 1.5x -&gt; 2x -&gt; 1x)</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">const</span> velocidades = [<span class="wzw-tk-num">1.0</span>, <span class="wzw-tk-num">1.5</span>, <span class="wzw-tk-num">2.0</span>];</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">let</span> indiceVel = <span class="wzw-tk-num">0</span>;</span>
<span class="wzw-code-line">btnVel.<span class="wzw-tk-fn">addEventListener</span>(<span class="wzw-tk-str">&#039;click&#039;</span>, () =&gt; {</span>
<span class="wzw-code-line">    indiceVel = (indiceVel + <span class="wzw-tk-num">1</span>) % velocidades.length;</span>
<span class="wzw-code-line">    vid.playbackRate = velocidades[indiceVel];</span>
<span class="wzw-code-line">    btnVel.textContent = <span class="wzw-tk-str">`${velocidades[indiceVel].toFixed(1)}x`</span>;</span>
<span class="wzw-code-line">});</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>const vid = document.getElementById(&#039;videoDemo&#039;);
const btnPlay = document.getElementById(&#039;btnPlayPause&#039;);
const barra = document.getElementById(&#039;barraProgresso&#039;);
const lblTempo = document.getElementById(&#039;tempoDisplay&#039;);
const btnVel = document.getElementById(&#039;btnVelocidade&#039;);

// Alterna Play / Pause
btnPlay.addEventListener(&#039;click&#039;, () =&gt; {
    if (vid.paused) {
        vid.play();
        btnPlay.textContent = &#039;⏸ Pausar&#039;;
    } else {
        vid.pause();
        btnPlay.textContent = &#039;▶ Play&#039;;
    }
});

// Atualiza a barra de progresso em tempo real
vid.addEventListener(&#039;timeupdate&#039;, () =&gt; {
    const porcentagem = (vid.currentTime / vid.duration) * 100;
    barra.style.width = `${porcentagem}%`;

    const mins = Math.floor(vid.currentTime / 60);
    const segs = Math.floor(vid.currentTime % 60);
    lblTempo.textContent = `${String(mins).padStart(2, &#039;0&#039;)}:${String(segs).padStart(2, &#039;0&#039;)}`;
});

// Alternador de velocidade (1x -&gt; 1.5x -&gt; 2x -&gt; 1x)
const velocidades = [1.0, 1.5, 2.0];
let indiceVel = 0;
btnVel.addEventListener(&#039;click&#039;, () =&gt; {
    indiceVel = (indiceVel + 1) % velocidades.length;
    vid.playbackRate = velocidades[indiceVel];
    btnVel.textContent = `${velocidades[indiceVel].toFixed(1)}x`;
});</textarea>
        </div>
    </div>
    
<div class="wzw-playground-action-bar">
    <span class="wzw-playground-desc">🧪 <strong>Quer testar o player de vídeo nativo e a API de mídia agora?</strong></span><br />
    <a href="https://webzoneware.com/web-academy/playground-web/" class="wzw-btn-playground" target="_blank" rel="noopener">⚡ Abrir no Playground IDE &rarr;<br />
    </a>
</div>
<div class="wzw-pro-tip">
<h4>⚡ Dica Pro de Core Web Vitals: Prevenindo o Layout Shift (CLS)</h4>
<p>
        Nunca insira uma tag <code>&lt;video&gt;</code> sem especificar os atributos <code>width</code> e <code>height</code> ou definir a propriedade CSS <code>aspect-ratio: 16 / 9;</code> no seu arquivo de estilo.
    </p>
<p>
        Se as dimensões não forem reservadas antecipadamente, o navegador assumirá tamanho zero até que os metadados do vídeo sejam baixados. No momento em que o vídeo surge, toda a página abaixo dele sofre um salto repentino, destruindo sua pontuação de <strong>CLS (Cumulative Layout Shift)</strong> nas auditorias do Google PageSpeed!
    </p>
</div>
<h2>7. Ferramentas Relacionadas &#038; Próximos Passos</h2>
<p>
    Aprofunde seus estudos audiovisuais com as ferramentas práticas do nosso portal:
</p>
<ul>
<li><a href="https://webzoneware.com/web-ferramentas/hub-imagens/">Hub Master de Imagens</a>: Otimize e comprima imagens no formato WebP para usar como capa (poster) dos seus vídeos.</li>
<li><a href="https://webzoneware.com/web-ferramentas/central-dev/">Central do Desenvolvedor Web</a>: Conversores e formatadores de código para integrar com seus scripts multimídia.</li>
<li><a href="https://webzoneware.com/web-academy/html/websockets-comunicacao-tempo-real/">Lição 41: WebSockets: Comunicação em Tempo Real</a>: Revise a transmissão de dados bidirecionais.</li>
<li><a href="https://webzoneware.com/web-academy/html/audio-nativo-html5/">Lição 43: Áudio Nativo (&lt;audio&gt;)</a>: Conheça a manipulação de som, podcasts e efeitos sonoros com a tag audio.</li>
</ul>
<h2>8. Referências Técnicas &#038; Especificações Oficiais</h2>
<ul>
<li><a href="https://html.spec.whatwg.org/multipage/media.html#the-video-element" target="_blank" rel="noopener">WHATWG HTML Living Standard: The &lt;video&gt; Element Specification</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video" target="_blank" rel="noopener">MDN Web Docs: The Video Embed Element Reference</a></li>
<li><a href="https://www.w3.org/WAI/media/av/" target="_blank" rel="noopener">W3C Web Accessibility Initiative: Making Audio and Video Accessible</a></li>
</ul>
<p><!-- Schema.org TechArticle JSON-LD --><br />
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "HTML5 Vídeo Nativo: A Tag <video>, Codecs e Legendas WebVTT",
  "description": "Aprenda a incorporar vídeos com a tag video do HTML5, formatos MP4 e WebM, legendas WebVTT e controle com JavaScript.",
  "url": "https://webzoneware.com/web-academy/html/video-nativo-html5/",
  "inLanguage": "pt-BR",
  "proficiencyLevel": "Intermediate",
  "articleSection": "Web Academy - Curso de HTML & HTML5 Completo",
  "author": {
    "@type": "Organization",
    "name": "Web-ZoneWare",
    "url": "https://webzoneware.com"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Web-ZoneWare",
    "logo": {
      "@type": "ImageObject",
      "url": "https://webzoneware.com/wp-content/themes/astra-child/assets/images/logo.png"
    }
  }
}
</script></p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/video-nativo-html5/">HTML5 Vídeo Nativo: Guia Completo da Tag | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-academy/curso-html/video-nativo-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" length="394" type="video/mp4" />

			</item>
	</channel>
</rss>
