Compatibilidade de contêineres e codecs de vídeo
A reprodução de vídeo depende de duas escolhas diferentes: o contêiner que organiza a mídia e o codec que comprime a imagem.
Executar grátis
Uma extensão conhecida não garante que o fluxo de vídeo interno funcione em todos os lugares. Este verificador avalia MP4, MOV, MKV, WebM e AVI combinados com H.264, H.265, VP9 ou AV1. Ele fornece um nível conservador de suporte, explica o principal risco de interoperabilidade e recomenda quando você deve oferecer uma alternativa de ampla reprodução.
Entenda o significado do resultado de compatibilidade
O verificador usa três níveis de suporte em vez de tratar a reprodução como um simples sim ou não técnico. Amplo significa que a combinação é uma opção confiável nos principais navegadores atuais e em ambientes modernos de iOS e Android. Limitado indica suporte real, mas com lacunas importantes devido à família do navegador, à versão do sistema operacional, ao hardware do dispositivo ou à forma habitual de empacotar o codec. Fraco identifica uma combinação incomum para entrega na web ou pouco confiável nos reprodutores nativos de dispositivos móveis. O indicador booleano facilita decisões automatizadas, enquanto a explicação preserva a razão da classificação. Esta é uma avaliação do formato, não uma promessa para todo arquivo codificado. Perfil, nível, resolução, profundidade de bits, taxa de quadros, codec de áudio, criptografia e metadados danificados ainda podem impedir a reprodução. Use o resultado como uma verificação inicial de arquitetura antes da codificação e dos testes em dispositivos, não como substituto para testar arquivos representativos nas plataformas usadas pelo seu público.
Escolha o contêiner e o codec em conjunto
Um codec descreve como os quadros são comprimidos; um contêiner define como vídeo, áudio, temporização, legendas e metadados são empacotados. Essas camadas se relacionam, mas não são intercambiáveis. H.264 em MP4 tem grande portabilidade porque tanto a compressão quanto o empacotamento possuem implementações maduras em navegadores e celulares. O mesmo fluxo H.264 em AVI ou MKV pode funcionar em um aplicativo de desktop e falhar como vídeo incorporado na web ou no reprodutor do sistema móvel. Da mesma forma, VP9 é naturalmente associado ao WebM para entrega no navegador, enquanto colocá-lo em MOV gera uma combinação incomum e pouco interoperável. Codecs recentes podem economizar largura de banda, mas eficiência não torna um formato universal. H.265 tem suporte especialmente forte no ecossistema Apple; em outros ambientes, depende mais do navegador, do sistema, das licenças e do hardware. A adoção do AV1 continua avançando, mas celulares antigos e aparelhos sem decodificação adequada ainda podem representar uma parte importante do seu público.
Planeje alternativas e testes em produção
Para alcançar o maior público possível, use MP4 com H.264 como arquivo básico. Quando metas de qualidade ou largura de banda justificarem VP9, AV1 ou H.265, ofereça a codificação mais recente como fonte adicional, sem presumir que um único arquivo avançado atenderá a todos. Um player web pode listar várias fontes para o navegador escolher a compatível; aplicativos podem decidir de forma semelhante conforme a plataforma e os decodificadores disponíveis. Mantenha a alternativa codificada separadamente e confirme que o servidor envia o tipo de mídia correto, aceita solicitações de intervalos de bytes e permite o acesso entre origens necessário. Teste arquivos reais, pois uma matriz não identifica perfil, nível, formato de pixel, informações de cor, codec de áudio nem metadados inválidos. Inclua iPhones e dispositivos Android antigos e atuais, além dos navegadores indicados pelas suas métricas. Teste o início da reprodução e a busca temporal. Repita a verificação ao alterar a escada de codificação ou as versões mínimas dos sistemas compatíveis.
Casos de uso
Escolher um formato para a web
Compare o contêiner e o codec propostos antes de configurar uma esteira de codificação ou uma fonte de vídeo HTML.
Validar mídias enviadas
Avise quem publica quando uma combinação provavelmente não funcionará de forma consistente em navegadores e celulares.
Aplicar uma política de alternativa
Use o indicador de suporte amplo no CI para exigir MP4/H.264 junto com formatos modernos e eficientes.
Perguntas frequentes
Um resultado amplo garante reprodução em qualquer lugar?
Não. Ele indica boa cobertura do formato, mas perfil, nível, profundidade de bits, áudio, criptografia, metadados e versão do navegador também afetam a reprodução.
Por que contêiner e codec são verificados separadamente?
O codec comprime o vídeo, enquanto o contêiner empacota esse fluxo com temporização, áudio e metadados. Uma plataforma pode aceitar um codec em um contêiner e não em outro.
Qual é a alternativa mais segura?
Entre as opções disponíveis, MP4 com H.264 é a alternativa geral mais confiável para navegadores, iOS e Android.
O verificador inspeciona meu arquivo de vídeo?
Não. Ele avalia os nomes do contêiner e do codec fornecidos por você. Use uma ferramenta de metadados para identificar os fluxos de um arquivo existente.
Por que uma combinação limitada funciona no meu celular?
Limitado significa que há suporte relevante, mas ele não é consistente o bastante entre navegadores, versões de sistema e aparelhos para ser considerado amplo.
Quanto custa uma solicitação?
Cada solicitação de API custa US$ 0,002. A implementação no navegador usa a mesma lógica determinística de compatibilidade.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/video/container-compatibility \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"container":"mp4","codec":"h264"}'const res = await fetch("https://api.kit.forhosting.com/video/container-compatibility", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"container": "mp4",
"codec": "h264"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/container-compatibility",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"container": "mp4",
"codec": "h264"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/container-compatibility", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"container":"mp4","codec":"h264"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"container":"mp4","codec":"h264"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/container-compatibility", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"container": "mp4",
"codec": "h264"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.container_compatibility",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |