Porque é que um MP4 não reproduz, e o que é realmente um contentor
Um MP4 que não reproduz raramente está corrompido. A extensão nomeia apenas o contentor, o invólucro que guarda os fluxos e as suas marcas temporais. O que tem de ser descodificado é o codec lá dentro, e o mesmo .mp4 tanto pode conter H.264, que reproduz num telemóvel com dez anos, como AV1, em que uma televisão de dois anos não consegue tocar. É por isso que um MP4 reproduz e outro não.
A qualquer ficheiro de vídeo aplicam-se duas perguntas: em que caixa está e como está comprimida a imagem. Mudar a caixa costuma sair de graça; mudar a compressão nunca sai.
Um contentor é uma caixa, um codec é a imagem
| Contentor | Codecs de vídeo | Áudio | Suporte |
|---|---|---|---|
| MP4 | H.264, H.265, algum AV1 | AAC, MP3 | Em todo o lado |
| WebM | VP8, VP9, AV1 | Opus, Vorbis | Só navegadores |
| MKV | Quase tudo | AC-3, DTS, o que for | Leitores de secretária, não navegadores |
| MOV | H.264, H.265, ProRes | AAC, PCM | Apple, edição |
| AVI | DivX, Xvid, MJPEG | MP3, PCM | Windows legado |
O MKV é o permissivo, bom para arquivo e mau para entrega: um MKV válido pode conter uma combinação que nenhum navegador abre. O MOV e o MP4 partilham a maior parte da estrutura, por isso passar de um para o outro é muitas vezes apenas reescrever o índice. Inspecione o ficheiro:
input.mp4
Stream #0:0 Video h264 (High) 1920x1080 30 fps 4200 kb/s
Stream #0:1 Audio aac (LC) 48000 Hz stereo 128 kb/s
A palavra a seguir a "Video" é a que interessa. A palavra "mp4" não diz quase nada.
Que codec reproduz onde
| Codec | Bits para a mesma qualidade | Licenciamento | Suporte |
|---|---|---|---|
| H.264 (AVC) | Referência, digamos 100% | Pool, licenciado quase em todo o lado | Universal |
| H.265 (HEVC) | 50 a 65% | Pools concorrentes, caro, por resolver | Apple sim, navegadores irregulares |
| VP9 | Semelhante ao H.265 | Livre de royalties | Chrome, Firefox, Edge, Android |
| AV1 | 30 a 50% | Livre de royalties | Navegadores atuais, hardware recente |
O H.265 é tecnicamente forte e comercialmente incómodo, por isso o suporte divide-se por fabricante e não por critérios técnicos. O AV1 comprime melhor e codifica muito mais devagar, por vezes uma ordem de grandeza, pelo que serve para vídeo codificado uma vez e visto muitas. Para um público desconhecido, H.264 em MP4 continua a ser a resposta, e é para aí que o Compress Video aponta.
Taxa de bits, resolução e taxa de fotogramas
A taxa de bits são bits por segundo de saída, e é só ela que determina o tamanho do ficheiro: multiplique pela duração e tem o ficheiro.
1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s = about 0.5 MB per second
Duplicar a resolução quadruplica a contagem de píxeis, mas não os bits necessários, porque os píxeis vizinhos de um fotograma maior são mais parecidos entre si e comprimem melhor. Conte com duas a três vezes mais, por isso reduzir a largura e a altura a metade está entre as formas mais baratas de encolher um ficheiro: é isso o Resize Video, e o Crop Video deita píxeis fora de vez. A taxa de fotogramas é mais suave, acrescentando 20 a 40% ao passar de 30 para 60 em vez de 100%, e o Change Video Speed encurta antes a linha temporal.
Três formas de controlar a taxa:
- Taxa de bits constante mantém uma única taxa do princípio ao fim: os planos estáticos desperdiçam bits e o movimento rápido desfaz-se. Serve para ligações com um teto rígido.
- Taxa de bits variável com um alvo faz a média, deixando as cenas pedir bits emprestados umas às outras. O tamanho é previsível, por isso use-a quando a saída tiver de caber num limite.
- Qualidade constante, normalmente um valor de CRF, fixa a qualidade e deixa a taxa de bits ir onde precisa. O tamanho é imprevisível, a qualidade é uniforme, e é a opção por omissão para tudo o que seja visto e não transmitido.
No H.264 a escala de CRF vai de 0 a 51, sendo melhor quanto mais baixo: 18 é quase indistinguível da fonte, 23 é uma opção sensata por omissão, a partir de 28 o movimento desfaz-se. A escala não é comum aos vários codecs.
Fotogramas-chave, e porque é que um corte às vezes sai de graça
Um fotograma I, ou fotograma-chave, é uma imagem completa que se descodifica sozinha. Um fotograma P guarda apenas o que mudou em relação a um fotograma anterior. Um fotograma B prevê a partir de um fotograma anterior e de um posterior, o que comprime melhor e é a razão por que os descodificadores por vezes seguram fotogramas antes de os mostrar.
Um fotograma-chave mais os que dele dependem formam um grupo de imagens, e os codificadores para web colocam um a cada dois segundos, mais ou menos. Corte a meio de um grupo e os fotogramas sobreviventes passam a referir-se a uma imagem que já não está no ficheiro, e é por isso que cortar tem dois modos. Copiar os fluxos é instantâneo e sem perdas, mas só cai num fotograma-chave, pelo que o início pode deslocar-se até ao comprimento do grupo; recodificar coloca um fotograma-chave onde o pediu, a troco de tempo e de qualidade. O Trim Video oferece os dois; copie, a não ser que o fotograma exato conte.
Recodificar custa qualidade porque cada passagem com perdas descarta aquilo que o modelo considera menos visível. Codifique outra vez e a segunda passagem trata os artefactos da primeira como detalhe verdadeiro, preservando-os e acrescentando os seus, pelo que o erro se acumula ao longo das gerações. Copie os fluxos quando só muda o contentor, e copie a imagem quando só sai o áudio, que é o que o Mute Video faz. O Rotate Video pode definir uma marca de rotação em vez de rodar píxeis, embora os leitores que a ignoram mostrem a orientação original. Quando os píxeis têm mesmo de mudar, mude tudo numa única passagem.
A faixa de áudio é a outra metade
O áudio é um fluxo separado, com o seu próprio codec, frequência de amostragem e disposição de canais, e é uma razão frequente para um ficheiro não reproduzir. Um navegador que descodifica a imagem H.264 sem problema pode não descodificar AC-3 ou DTS surround, deixando silêncio ou fazendo falhar o ficheiro inteiro. As cópias de disco em MKV falham assim constantemente.
A frequência de amostragem é a periodicidade com que a forma de onda foi medida: 44100 Hz vindos do CD, 48000 Hz é a norma do vídeo. AAC a 48000 Hz em estéreo é a escolha segura para entrega, perto de 128 kb/s para fala e 192 kb/s para música. O Extract Audio retira uma faixa em MP3, WAV, AAC ou Opus.
Transformar vídeo num GIF
O GIF é um formato de imagem fixa de 1987 com animação aparafusada por cima e sem compensação de movimento a sério. Cada fotograma é comprimido em grande medida por si só, por isso cinco segundos podem chegar a vários megabytes onde o mesmo excerto em MP4 sem som ocupa umas duas centenas de kilobytes. Está limitado a 256 cores por fotograma, tem um bit de transparência e não tem áudio.
O limite de cores é onde a qualidade se ganha ou se perde. Uma paleta fixa genérica cria bandas nos gradientes e obriga a muito dithering, e esse ruído é quase aleatório, por isso comprime mal e inflaciona o ficheiro. Construir uma paleta a partir do próprio excerto e depois mapear os fotogramas para ela dá uma imagem melhor e muitas vezes um ficheiro mais pequeno; o Video to GIF faz essa passagem. Mantenha os GIF curtos e estreitos: dois ou três segundos, 480 a 640 píxeis de largura, 10 a 15 fotogramas por segundo. Se o destino aceitar vídeo, envie antes um MP4 sem som.
Definições que funcionam para a web
- H.264 em MP4 com áudio AAC para tudo o que apenas tem de reproduzir.
- CRF perto de 23, a descer para 20 em gravações de ecrã com texto miúdo e a subir para 26 em imagens de fundo.
- Redimensione para a largura a que vai ser mostrado, antes de comprimir e não depois.
- Ative o faststart, para que o índice fique à frente e a reprodução comece antes de a transferência terminar.
Tudo isto corre no navegador, na sua própria máquina, por isso nada é enviado para lado nenhum e o limite é a memória, não uma quota de servidor. Os buffers de descodificação de um ficheiro 4K longo podem esgotar um separador, por isso corte primeiro e redimensione depois.