<video>: O elemento HTML de incorporação de VÃdeo
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨julho de 2015â©.
* Some parts of this feature may have varying levels of support.
O elemento HTML <video> incorpora um reprodutor de mÃdia que suporta a reprodução de vÃdeo no documento. Você também pode usar <video> para conteúdo de áudio, mas o elemento <audio> pode proporcionar uma experiência de usuário mais adequada.
Experimente
<video controls width="250">
<source src="/shared-assets/videos/flower.webm" type="video/webm" />
<source src="/shared-assets/videos/flower.mp4" type="video/mp4" />
Download the
<a href="/shared-assets/videos/flower.webm">WEBM</a>
or
<a href="/shared-assets/videos/flower.mp4">MP4</a>
video.
</video>
O exemplo acima mostra um uso simples do elemento <video>. Semelhante ao elemento <img>, incluÃmos o caminho da mÃdia que queremos exibir dentro do atributo src; também podemos incluir outros atributos para especificar informações, como largura e altura do vÃdeo, se queremos que ele seja reproduzido automaticamente e em loop, se queremos mostrar os controles de vÃdeo padrão do navegador etc.
O conteúdo dentro das tags de abertura e fechamento <video></video> é exibido como uma alternativa (fallback) em navegadores que não suportam o elemento.
Atributos
Como qualquer elemento HTML, este elemento suporta os atributos globais.
autoplay-
Um atributo Booleano; se especificado, o video vai ser executado assim que possÃvel sem precisar de carregar todo o arquivo.
Nota: Sites que reproduzem automaticamente áudio (ou vÃdeos com uma faixa de áudio) podem proporcionar uma experiência desagradável para os usuários, portanto, devem ser evitados sempre que possÃvel. Se você precisar oferecer a funcionalidade de reprodução automática, é recomendável torná-la opcional (exigindo que o usuário a habilite especificamente). No entanto, isso pode ser útil ao criar elementos de mÃdia cuja fonte será definida posteriormente, sob controle do usuário. Consulte nosso guia sobre reprodução automática para obter informações adicionais sobre como usar a reprodução automática corretamente.
Para desativar a reprodução automática,
autoplay="false"não vai funcionar; o vÃdeo será reproduzido automaticamente se o atributo estiver presente na tag<video>. Para remover a reprodução automática, o atributo deve ser removido por completo.A reprodução automática não funciona em alguns navegadores (ex., Chrome 70.0) se o atributo
mutedestiver presente. controls-
Se esse atributo estiver presente, o navegador oferecerá controles para permitir o usuário controlar a reprodução do vÃdeo, incluindo volume, navegação (seek), e pausa/continuação da reprodução.
controlslist-
O atributo
controlslist, quando definido, ajuda o navegador a selecionar que controles mostrar no elementovideosempre que o navegador exibir o seu próprio conjunto de controles (ou seja, quando o atributocontrolsfor especificado).Os valores permitidos são
nodownload,nofullscreenenoremoteplayback.Use o atributo
disablepictureinpicturese você quiser desabilitar o modo Picture-In-Picture (e o controle). crossorigin-
Esse atributo enumerado indica se deve usar CORS para buscar o vÃdeo relacionado. Recursos habilitados para CORS podem ser reutilizados no elemento
<canvas>sem serem contaminados. Os valores permitidos são:anonymousEnvia uma solicitação de origem cruzada sem uma credencial. Em outras palavras, ele envia o cabeçalho HTTPOrigin:sem um cookie, certificado X.509 ou realizar uma autenticação HTTP Basic. Se o servidor não fornecer credenciais ao site de origem (não definindo o cabeçalho HTTPAccess-Control-Allow-Origin:), o recurso será contaminado e seu uso restrito.use-credentials- : Envia uma solicitação de origem cruzada com uma credencial. Em outras palavras, envia o cabeçalho HTTP
Origin:com um cookie, um certificado, ou realiza autenticação HTTP Basic. Se o servidor não fornecer credenciais ao o site de origem (por meio do cabeçalho HTTPAccess-Control-Allow-Credentials:), o recurso será contaminado e seu uso será restrito.
- : Envia uma solicitação de origem cruzada com uma credencial. Em outras palavras, envia o cabeçalho HTTP
Quando não está presente, o recurso é buscado sem uma solicitação CORS (ou seja, sem enviar o cabeçalho HTTP
Origin:), impedindo seu uso não contaminado em elementos<canvas>. Se for inválido, é tratado como se a palavra-chave enumeradaanonymoustivesse sido usada. Consulte os atributos de configuração de CORS para obter informações adicionais. disablepictureinpicture-
Impede o navegador de sugerir um menu de contexto Picture-in-Picture ou de solicitar automaticamente o Picture-in-Picture em alguns casos..
disableremoteplayback-
Um atributo Booleano usado para desativar a capacidade de reprodução remota em dispositivos conectados usando tecnologias com fio (HDMI, DVI, etc.) e sem fio (Miracast, Chromecast, DLNA, AirPlay, etc.).
No Safari, você pode usar
x-webkit-airplay="deny"como alternativa. height-
A altura da área de exibição do vÃdeo, em pixels de CSS (apenas valores absolutos; sem porcentagens).
loop-
Um atributo Booleano; se especificado, ao chegar no fim do vÃdeo, ele voltará automaticamente para o começo.
muted-
Um atributo Booleano que indica a configuração padrão do áudio contido no vÃdeo. Se definido, o áudio vai começar mudo. Seu valor padrão é falso, significando que o áudio será reproduzido juntamente com o vÃdeo.
playsinline-
Um atributo booleano que indica que o vÃdeo deve ser reproduzido "em linha" (inline), ou seja, dentro da área de reprodução do elemento. Observe que a ausência deste atributo não implica que o vÃdeo será sempre reproduzido em tela cheia.
poster-
Uma URL indicando uma imagem de prévia do vÃdeo até o usuário reproduzir ou navegar por ele. Se este atributo não estiver especificado, nada será mostrado até que o primeiro quadro esteja disponÃvel; então o primeiro quadro será exibido como imagem de prévia.
preload-
Esse atributo enumerado pretende dar uma sugestão ao navegador sobre o que o autor pensa que proporcionará uma melhor experiência do usuário. Ele pode ter os seguintes valores:
none: indica que o usuário não necessitará consultar o vÃdeo ou que o servidor quer minimizar seu tráfego; em outros termos indica que o vÃdeo não deve ser pré-carregado.metadata: indica que embora o usuário não necessitará consultar o vÃdeo, pegar os meta-dados (ex: comprimento) é interessante.auto: indica que o usuário necessita ter prioridade; em outros termos isso indicou que, se necessário, o vÃdeo inteiro pode ser baixado, mesmo que não seja esperado a execução.- a string vazia: é um sinônimo do valor
auto.
Se não definido, seu valor padrão será definido pelo navegador (isto é, cada navegador pode escolher seu valor padrão), embora a especificação recomende que seja definido para o
metadata.Nota:
- O atributo
autoplaytem precedência sobre opreload, pois se é necessário executar o vÃdeo automaticamente, o navegador obviamente o baixará. Definindo ambosautoplayepreloadé permitido pela especificação. - O navegador não é forçado pela especifição a seguir o valor desse atributo; é apenas uma sugestão.
src-
A URL do vÃdeo a ser incorporado. Isto é opcional; ao invés disso você pode usar o elemento
<source>dentro do bloco do vÃdeo para especificar o vÃdeo a ser incorporado . width-
A largura da área de exibição do vÃdeo, em pixels de CSS (apenas valores absolutos; sem porcentagens).
Eventos
| Nome do evento | Quando é disparado |
|---|---|
audioprocess
Deprecated
|
O buffer de entrada de um ScriptProcessorNode está pronto para
ser processado.
|
canplay
|
O navegador pode reproduzir a mÃdia, mas estima que não há dados suficientes carregados para reproduzir a mÃdia até o final sem ter que parar para carregar mais conteúdo. |
canplaythrough
|
O navegador estima que pode reproduzir a mÃdia até o final sem precisar parar para carregar mais conteúdo. |
complete
|
A renderização de um OfflineAudioContext foi concluÃda.
|
durationchange
|
O atributo duration foi atualizado. |
emptied
|
A mÃdia ficou vazia; por exemplo, este evento é enviado se a mÃdia já foi
carregada (ou parcialmente carregada), e o método
load()
é chamado para recarregá-la.
|
ended
|
A reprodução foi interrompida porque o final da mÃdia foi alcançado. |
error
|
Ocorreu um erro ao buscar os dados da mÃdia, ou o tipo do recurso não é um formato de mÃdia suportado. |
loadeddata
|
O primeiro quadro da mÃdia terminou de carregar. |
loadedmetadata
|
Os metadados foram carregados. |
loadstart
|
Disparado quando o navegador começou a carregar o recurso. |
pause
|
A reprodução foi pausada. |
play
|
A reprodução começou. |
playing
|
A reprodução está pronta para começar depois de ter sido pausada ou atrasada devido à falta de dados. |
progress
|
Disparado periodicamente conforme o navegador carrega um recurso. |
ratechange
|
A taxa de reprodução foi alterada. |
seeked
|
Uma operação de navegação foi concluÃda. |
seeking
|
Uma operação de navegação foi iniciada. |
stalled
|
O agente do usuário está tentando buscar dados de mÃdia, mas os dados não estão sendo recebidos conforme o esperado. |
suspend
|
O carregamento dos dados da mÃdia foi suspenso. |
timeupdate
|
O tempo indicado pelo atributo currentTime foi atualizado.
|
volumechange
|
O volume foi alterado. |
waiting
|
A reprodução foi interrompida devido à falta temporária de dados. |
Notas de uso
Os navegadores não dão suporte a todos os mesmos formatos de vÃdeo; você pode fornecer múltiplas fontes dentro de elementos <source> aninhados, e o navegador utilizará a primeira que tiver suporte.
<video controls>
<source src="meuVideo.webm" type="video/webm" />
<source src="meuVideo.mp4" type="video/mp4" />
<p>
O seu navegador não tem suporte a vÃdeo HTML. Em vez disso, aqui está
<a href="meuVideo.mp4" download="meuVideo.mp4">o link do vÃdeo</a>.
</p>
</video>
Nós oferecemos um guia abrangente e detalhado sobre tipos de arquivos de mÃdia e o guia sobre os codecs compatÃveis com vÃdeo. Também está disponÃvel um guia sobre os codecs de áudio que podem ser usados com eles.
Outras notas de uso:
- Se você não especificar o atributo
controls, o vÃdeo não incluirá os controles padrão do navegador; você pode criar seus próprios controles personalizados usando JavaScript e a APIHTMLMediaElement. Consulte Criando um player de vÃdeo compatÃvel com vários navegadores para obter mais detalhes. - Para permitir o controle preciso do conteúdo do seu vÃdeo (e áudio), os elementos
HTMLMediaElementdisparam muitos eventos diferentes. Além de fornecer controlabilidade, esses eventos permitem que você monitore o progresso tanto do download quanto da reprodução da mÃdia, bem como o estado e a posição da reprodução. - Você pode usar a propriedade
object-positionpara ajustar o posicionamento do vÃdeo dentro do quadro do elemento e a propriedadeobject-fitpara controlar como o tamanho do vÃdeo é ajustado para caber dentro do quadro. - Para exibir legendas/legendas junto com o seu vÃdeo, você pode usar JavaScript junto com o elemento
<track>e o formato WebVTT. Consulte Adicionando legendas em um vÃdeo HTML para obter mais informações. - Você pode reproduzir arquivos de áudio usando um elemento
<video>. Isso pode ser útil, por exemplo, se você precisar executar áudio com uma transcrição WebVTT, já que o elemento<audio>não permite legendas usando WebVTT. - Para testar o conteúdo de alternativa (fallback) em navegadores que suportam o elemento, você pode substituir
<video>por um elemento que não exista, como<notavideo>.
Uma boa fonte geral de informações sobre o uso de HTML <video> é o tutorial para iniciantes em Conteúdo de vÃdeo e áudio.
Estilização com CSS
O elemento <video> é um replaced element â seu valor display é inline por padrão, mas sua largura e altura padrão na viewport são definidas pelo vÃdeo que está sendo incorporado.
Não há considerações especiais para estilizar <video>; uma estratégia comum é atribuir a ele um valor display de block para facilitar o posicionamento, o tamanho etc. e, em seguida, fornecer informações de estilo e layout conforme necessário. Noções básicas de estilo do player de vÃdeo fornece algumas técnicas de estilo úteis.
Detectando a adição e a remoção de faixas
Você pode detectar quando as faixas são adicionadas e removidas de um elemento <video> usando os eventos addtrack e removetrack. Entretanto, esses eventos não são enviados diretamente para o próprio elemento <video>. Em vez disso, eles são enviados para o objeto da lista de faixas dentro do HTMLMediaElement do elemento <video> que corresponde ao tipo de faixas que foi adicionada ao elemento:
HTMLMediaElement.audioTracks-
Um
AudioTrackListcontendo todas as faixas de áudio do elemento de mÃdia. Você pode adicionar um listener no eventoaddtrackdeste objeto para ser alertado quando novas faixas de áudio forem adicionadas ao elemento. HTMLMediaElement.videoTracks-
Adicione um listener
addtracka este objetoVideoTrackListpara ser informado quando faixas de vÃdeo forem adicionadas ao elemento. HTMLMediaElement.textTracks-
Adicione um listener de evento
addtracka esteTextTrackListpara ser notificado quando novas faixas de texto forem adicionadas ao elemento.
Por exemplo, para detectar quando faixas de áudio são adicionadas ou removidas de um elemento <video>, você pode usar um código como este:
const elem = document.querySelector("video");
elem.audioTracks.onaddtrack = (event) => {
trackEditor.addTrack(event.track);
};
elem.audioTracks.onremovetrack = (event) => {
trackEditor.removeTrack(event.track);
};
Este código monitora as faixas de áudio que foram adicionadas ou removidas do elemento e chama uma função hipotética em um editor de faixas para registrar e remover a faixa da lista de faixas disponÃveis do editor.
Você também pode usar addEventListener() para ouvir os eventos addtrack e removetrack.
Suporte do servidor para vÃdeo
Se o tipo MIME do vÃdeo não estiver definido corretamente no servidor, o vÃdeo poderá não ser mostrado ou uma caixa cinza contendo um X (se o JavaScript estiver habilitado) será exibida em seu lugar.
Se você disponibiliza seu vÃdeos como Ogg Theora, você pode corrigir esse problema para o servidor web Apache adicionando a extensão utilizada por seu arquivos de vÃdeo (".ogm", ".ogv", e ".ogg" são as mais comuns) para o tipo MIME "video/ogg" através do arquivo "mime.types" localizado em "/etc/apache" ou através da configuração de diretiva "AddType" no httpd.conf.
AddType video/ogg .ogm AddType video/ogg .ogv AddType video/ogg .ogg
Se você disponibilizar seu vÃdeos como WebM, você pode corrigir esse problema para o servidor web Apache adicionando a extensão usada por seu arquivos de vÃdeo (".webm" é a mais comum) para o tipo MIME "video/webm" através do arquivo "mime.types" localizado em "/etc/apache" ou através da configuração de diretiva "AddType" no httpd.conf.
AddType video/webm .webm
Seu serviço de hospedagem talvez forneça uma interface simples para mudar a configuração dos tipos MIME para as novas tecnologias até que uma atualização global ocorra naturalmente.
Exemplos
>Fonte única
Esse exemplo reproduz um vÃdeo quando ativado, fornecendo ao usuário os controles de vÃdeo padrão do navegador para controlar a reprodução.
HTML
<!-- Exemplo de vÃdeo simples -->
<!-- 'Big Buck Bunny' licensed under CC 3.0 by the Blender foundation. Hosted by archive.org -->
<!-- Poster de peach.blender.org -->
<video
controls
src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217"
width="620">
Desculpe, seu navegador não suporta vÃdeos incorporados, mas não se preocupe,
você pode
<a href="https://archive.org/details/BigBuckBunny_124">baixá-lo</a>
e assisti-lo com seu player de vÃdeo favorito!
</video>
Resultado
Até que o vÃdeo comece a ser reproduzido, a imagem fornecida no atributo poster é exibida em seu lugar. Se o navegador não tiver suporte para reprodução de vÃdeo, o texto de alternativa (fallback) será exibido.
Múltiplas fontes
Este exemplo se baseia no anterior, oferecendo três fontes diferentes para a mÃdia; isso permite que o vÃdeo seja assistido independentemente dos codecs de vÃdeo suportados pelo navegador.
HTML
<!-- Usando multiplas fontes como alternativa para a tag video -->
<!-- 'Elephants Dream' by Orange Open Movie Project Studio, licensed under CC-3.0, hosted by archive.org -->
<!-- Poster hospedado por Wikimedia -->
<video
width="620"
controls
poster="https://upload.wikimedia.org/wikipedia/commons/e/e8/Elephants_Dream_s5_both.jpg">
<source
src="https://archive.org/download/ElephantsDream/ed_hd.ogv"
type="video/ogg" />
<source
src="https://archive.org/download/ElephantsDream/ed_hd.avi"
type="video/avi" />
<source
src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
type="video/mp4" />
Desculpe, seu navegador não suporta vÃdeos incorporados, mas não se preocupe,
você pode fazer o
<a
href="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
download="ed_1024_512kb.mp4">
download do MP4
</a>
e assisti-lo com seu player de vÃdeo favorito!
</video>
Resultado
Primeiro, é tentado o formato Ogg. Se não for possÃvel reproduzi-lo, será tentado o AVI. Por fim, é tentado o MP4. Uma mensagem de fallback é exibida se o vÃdeo não puder ser reproduzido, mas a mesma não será exibida se todas as fontes falharem.
Alguns tipos de arquivos de mÃdia permitem que você forneça informações mais especÃficas usando o parâmetro codecs como parte da string de tipo do arquivo. Um exemplo relativamente simples é video/webm; codecs="vp8, vorbis", que indica que o arquivo é um vÃdeo WebM usando VP8 para o vÃdeo e Vorbis para o áudio.
Preocupações com a acessibilidade
Os vÃdeos devem fornecer legendas e transcrições que descrevam com precisão o seu conteúdo (consulte Adicionando legendas e subtÃtulos a vÃdeos em HTML para obter mais informações sobre como implementá-las). As legendas permitem que pessoas com perda auditiva compreendam o conteúdo de áudio de um vÃdeo enquanto ele está sendo reproduzido, enquanto as transcrições permitem que pessoas que precisam de mais tempo possam revisar o conteúdo de áudio em um ritmo e formato que seja confortável para elas.
Vale ressaltar que, embora seja possÃvel legendar mÃdia somente de áudio, isso só pode ser feito ao reproduzir áudio em um elemento <video>, uma vez que a região de vÃdeo do elemento é usada para apresentar as legendas. Este é um dos cenários especiais em que é útil reproduzir áudio em um elemento de vÃdeo.
Se serviços de legendagem automática forem usados, é importante revisar o conteúdo gerado para garantir que ele represente com precisão o vÃdeo original.
Além do diálogo falado, legendas e transcrições também devem identificar músicas e efeitos sonoros que transmitam informações importantes. Isso inclui emoção e tom:
14 00:03:14 --> 00:03:18 [Música rock dramática] 15 00:03:19 --> 00:03:21 [sussurrando] O que é aquilo lá longe? 16 00:03:22 --> 00:03:24 Ã⦠é um⦠16 00:03:25 --> 00:03:32 [Barulho alto] [Barulho de pratos]
As legendas não devem obstruir o assunto principal do vÃdeo. Elas podem ser posicionadas usando a configuração align VTT cue.
Sumário técnico
| Categorias de conteúdo |
Conteúdo de fluxo, conteúdo de fraseado, conteúdo incorporado. Se possui o atributo
controls: interactive
conteúdo interativo e conteúdo palpável.
|
|---|---|
| Conteúdo permitido |
Se o elemento possui um atributo
Caso contrário: zero ou mais elementos |
| Omissão de tag | Nenhuma, ambas as tags de abertura e fechamento são obrigatórias. |
| Pais permitidos | Qualquer elemento que aceite conteúdo embutido. |
| ARIA role implÃcito | Nenhuma ARIA role correspondente |
| ARIA roles permitidas | application |
| Interface DOM | HTMLVideoElement |
Especificações
| Specification |
|---|
| HTML > # the-video-element > |
Compatibilidade com navegadores
Veja também
-
Posicionamento e dimensionamento da imagem em seu quadro:
object-positionandobject-fit <audio>