Vídeos nativos com a tag video
Aprenda a incorporar vídeos diretamente na página sem depender de serviços externos, usando os atributos controls, autoplay e loop.
Antes do HTML5, incorporar vídeos em páginas web exigia plugins externos como Flash ou Silverlight — tecnologias que dependiam de instalação no computador do usuário e que hoje estão completamente obsoletas.
Com o HTML5, a tag <video> trouxe suporte nativo a vídeos
diretamente no navegador — sem plugins, sem dependências
externas, com controles acessíveis e integração completa
com CSS e JavaScript.
Anatomia básica da tag video
<video src="meu-video.mp4" controls>
Seu navegador não suporta vídeos HTML5.
</video>
Diferente da <img>, a <video> é um elemento com
abertura e fechamento — o conteúdo entre as tags é
o texto de fallback, exibido apenas em navegadores
que não suportam a tag (o que é raríssimo hoje).
Os atributos essenciais
<video
src="apresentacao.mp4"
controls
width="800"
height="450"
>
Seu navegador não suporta reprodução de vídeo.
</video>
| Atributo | Tipo | Propósito |
|---|---|---|
src |
Valor | Caminho ou URL do arquivo de vídeo |
controls |
Booleano | Exibe os controles nativos do navegador |
width |
Valor | Largura em pixels |
height |
Valor | Altura em pixels |
O atributo controls
O atributo controls é booleano — sua simples presença
já ativa os controles nativos do navegador:
<!-- ✅ Com controles — o usuário pode play/pause/volume -->
<video src="video.mp4" controls></video>
<!-- ❌ Sem controles — o usuário não tem como interagir -->
<video src="video.mp4"></video>
⚠️ Nunca omita
controlsem vídeos de conteúdo — sem ele, o usuário não tem como pausar, avançar ou controlar o volume. Omitircontrolsé um erro grave de acessibilidade.
Os controles nativos incluem: botão de play/pause, barra de progresso, controle de volume, botão de tela cheia e, dependendo do navegador, velocidade de reprodução e legendas.
O visual dos controles varia entre navegadores — Chrome, Firefox e Safari têm estilos diferentes para os controles nativos.
Múltiplas fontes com a tag source
Diferentes navegadores suportam diferentes formatos
de vídeo. Para garantir compatibilidade, você pode
fornecer múltiplas fontes com a tag <source> —
o navegador usa a primeira que conseguir reproduzir:
<video controls width="800" height="450">
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
Seu navegador não suporta reprodução de vídeo.
</video>
Quando <source> é usado, o src não vai na tag
<video> — vai em cada <source> individualmente.
💡 A ordem das fontes importa: o navegador tenta a primeira e só vai para a próxima se não conseguir reproduzir. Coloque o formato mais eficiente primeiro — geralmente WebM — e o formato mais compatível por último — geralmente MP4.
Formatos de vídeo para a web
| Formato | Extensão | Codec de vídeo | Suporte |
|---|---|---|---|
| MP4 | .mp4 |
H.264 | ✅ Universal |
| WebM | .webm |
VP8 ou VP9 | ✅ Todos os modernos |
| OGG | .ogv |
Theora | Limitado — use como terceira opção |
<!-- Ordem recomendada: mais eficiente → mais compatível -->
<video controls width="800" height="450">
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
<p>
Seu navegador não suporta vídeo HTML5.
<a href="video.mp4">Baixar o vídeo</a>.
</p>
</video>
Atributos de comportamento
autoplay: reprodução automática
<video src="video.mp4" autoplay controls></video>
Inicia a reprodução automaticamente ao carregar a página.
⚠️ Atenção: a maioria dos navegadores modernos bloqueia o autoplay com som por padrão — para evitar que páginas toquem áudio inesperado. Para que o autoplay funcione, o vídeo geralmente precisa estar também com
muted:
<!-- ✅ Autoplay que funciona na maioria dos navegadores -->
<video src="video.mp4" autoplay muted controls></video>
muted: vídeo sem som
<video src="video-background.mp4" autoplay muted loop></video>
Inicia o vídeo sem áudio. Necessário para autoplay funcionar na maioria dos navegadores.
loop: repetição automática
<video src="animacao.mp4" autoplay muted loop></video>
Reinicia o vídeo automaticamente ao terminar. Muito usado em vídeos de fundo decorativos.
poster: imagem de capa
<video
src="palestra.mp4"
controls
poster="capa-palestra.jpg"
width="800"
height="450"
>
</video>
Define uma imagem que é exibida antes do vídeo começar
a reproduzir — a capa do vídeo. Sem poster, o
navegador exibe o primeiro frame do vídeo ou uma tela
escura enquanto carrega.
preload: dica de carregamento
<!-- none: não pré-carrega nada -->
<video src="video.mp4" controls preload="none"></video>
<!-- metadata: carrega apenas informações básicas (duração, dimensões) -->
<video src="video.mp4" controls preload="metadata"></video>
<!-- auto: o navegador decide quanto carregar (padrão) -->
<video src="video.mp4" controls preload="auto"></video>
O preload dá uma dica ao navegador sobre quanto
do vídeo pré-carregar:
none→ economiza banda — ideal para vídeos opcionais que o usuário pode nem assistirmetadata→ carrega apenas duração e dimensões — bom equilíbrio para a maioria dos casosauto→ o navegador decide — pode consumir banda desnecessária em conexões lentas
Legendas e acessibilidade com a tag track
A tag <track> adiciona legendas, transcrições e
descrições de áudio ao vídeo — um requisito essencial
de acessibilidade para usuários com deficiência auditiva:
<video controls width="800" height="450">
<source src="palestra.webm" type="video/webm">
<source src="palestra.mp4" type="video/mp4">
<!-- Legenda em português -->
<track
kind="subtitles"
src="legendas-pt.vtt"
srclang="pt"
label="Português"
default
>
<!-- Legenda em inglês -->
<track
kind="subtitles"
src="legendas-en.vtt"
srclang="en"
label="English"
>
</video>
Atributos da tag track
| Atributo | Propósito |
|---|---|
kind |
Tipo da faixa de texto |
src |
Caminho do arquivo de legenda (.vtt) |
srclang |
Idioma da legenda (pt, en, es...) |
label |
Nome exibido no menu de legendas do player |
default |
Define esta faixa como ativa por padrão |
Valores do atributo kind
| Valor | Uso |
|---|---|
subtitles |
Legendas — tradução do diálogo |
captions |
Closed captions — diálogo + efeitos sonoros |
descriptions |
Descrição de áudio para deficientes visuais |
chapters |
Marcadores de capítulos para navegação |
metadata |
Dados para uso por JavaScript |
O formato WebVTT
Legendas são fornecidas em arquivos .vtt
(Web Video Text Tracks) — um formato de texto simples:
WEBVTT
00:00:01.000 --> 00:00:04.000
Bem-vindo ao curso de HTML!
00:00:04.500 --> 00:00:08.000
Hoje vamos aprender sobre a tag video.
00:00:08.500 --> 00:00:12.000
Este é um elemento muito poderoso do HTML5.
💡 Fornecer legendas não é apenas uma boa prática — é um requisito das diretrizes WCAG 2.1 nível AA para qualquer vídeo com conteúdo de áudio importante.
Vídeo de fundo decorativo
Um uso muito comum em sites modernos é o vídeo de fundo — geralmente sem controles, em loop e sem som:
<!-- Vídeo decorativo de fundo — sem controles -->
<video
autoplay
muted
loop
playsinline
aria-hidden="true"
width="1920"
height="1080"
>
<source src="fundo.webm" type="video/webm">
<source src="fundo.mp4" type="video/mp4">
</video>
Detalhes importantes:
aria-hidden="true"→ oculta o vídeo de leitores de tela — já que é puramente decorativoplaysinline→ necessário em iOS para evitar que o Safari force o vídeo a abrir em tela cheia- Sem
controls→ vídeos puramente decorativos não precisam de controles
Exemplo completo: player de vídeo acessível
<figure>
<video
controls
width="800"
height="450"
poster="capa-aula.jpg"
preload="metadata"
>
<source src="aula-html-video.webm" type="video/webm">
<source src="aula-html-video.mp4" type="video/mp4">
<track
kind="captions"
src="legendas-pt.vtt"
srclang="pt"
label="Português"
default
>
<track
kind="captions"
src="legendas-en.vtt"
srclang="en"
label="English"
>
<p>
Seu navegador não suporta reprodução de vídeo.
<a href="aula-html-video.mp4" download>
Baixar o vídeo (MP4)
</a>.
</p>
</video>
<figcaption>
Aula 7 — A tag <code><video></code> no HTML5.
<small>Duração: 12 minutos</small>
</figcaption>
</figure>
Comparação de atributos booleanos
Atributos booleanos — controls, autoplay, muted,
loop e playsinline — funcionam pela simples presença.
Não precisam de valor:
<!-- ✅ As duas formas abaixo são equivalentes -->
<video controls autoplay muted loop></video>
<video controls="controls" autoplay="autoplay" muted="muted"></video>
<!-- A primeira forma é mais limpa e preferida -->
Resumindo
| Atributo | Tipo | Propósito |
|---|---|---|
src |
Valor | Caminho do vídeo |
controls |
Booleano | Controles nativos do player |
autoplay |
Booleano | Reprodução automática |
muted |
Booleano | Sem áudio — necessário para autoplay |
loop |
Booleano | Repetição automática |
poster |
Valor | Imagem de capa antes de reproduzir |
preload |
Valor | Dica de pré-carregamento |
playsinline |
Booleano | Inline em iOS, sem tela cheia forçada |
width / height |
Valor | Dimensões em pixels |
Boas práticas:
- Sempre use
controlsem vídeos de conteúdo - Use
mutedjunto comautoplay - Forneça
posterpara uma boa experiência visual - Forneça legendas com
<track>para acessibilidade - Use
aria-hidden="true"em vídeos puramente decorativos - Forneça múltiplos formatos com
<source>: WebM primeiro, MP4 como fallback