Como Adicionar Legendas a MKV e MP4 Sem Recodificar
Adicione legendas a MKV e MP4 sem recodificar: passos com MKVToolNix e FFmpeg, vários idiomas num ficheiro, faixas predefinidas e forçadas, e faixas em falta.
Para adicionar legendas a um MKV sem recodificar, multiplexa-as como uma faixa separada: o MKVToolNix faz isso numa interface gráfica, o FFmpeg com um só comando, e ambos copiam o vídeo intacto em aproximadamente o mesmo tempo que demora a copiar o ficheiro. O MP4 também pode ter faixas de legendas, mas só em texto simples.
A seguir: as duas ferramentas passo a passo, vários idiomas num só ficheiro com etiquetas de idioma corretas, o que os sinalizadores de faixa predefinida e de faixa forçada mudam para o espectador, e os motivos habituais pelos quais uma faixa multiplexada nunca aparece.
Porque é que adicionar legendas a um MKV não exige recodificação
Um ficheiro de vídeo é um contentor que guarda fluxos separados, e adicionar legendas só acrescenta mais um fluxo. A imagem e o som foram comprimidos uma única vez, quando o vídeo foi feito. A multiplexagem — muxing, em inglês — intercala um fluxo extra no contentor sem descodificar nada do que já lá está, por isso o resultado é o mesmo vídeo, bit a bit, com uma faixa de legendas ao lado.
Incrustar legendas é a operação inversa. O texto tem de ser desenhado em cada fotograma, por isso cada fotograma é descodificado, pintado e comprimido de novo. Isso custa tempo e um pouco de qualidade, e continua a ser a decisão certa quando uma plataforma ignora faixas de legendas; o guia da incrustação trata desse caminho. Se ainda não decidiu de qual dos dois precisa, hardsub vs softsub é a versão curta dessa decisão.
O Matroska (.mkv) foi pensado para o caminho do softsub. Guarda qualquer número de faixas de vídeo, áudio e legendas, além de anexos de ficheiros, como tipos de letra, e cada faixa transporta os seus próprios metadados:
- Idioma — um código como
engouspa, que os leitores usam para identificar as faixas e escolher uma automaticamente. - Nome — texto livre mostrado no menu do leitor, como «English» ou «English (SDH)».
- Sinalizador de faixa predefinida (default) — a faixa que um leitor liga quando o espectador não escolheu nenhuma.
- Sinalizador de faixa forçada (forced) — uma faixa mostrada mesmo quando o espectador tem as legendas desligadas, pensada para linhas em língua estrangeira.
Acertar nestes quatro é a maior parte do trabalho. A multiplexagem em si é a parte fácil.
É possível adicionar uma faixa de legendas a um MP4?
Sim, mas o MP4 só transporta legendas como mov_text, um formato de texto temporizado simples. O FFmpeg converte um SRT para esse formato à entrada, e tipos de letra, cores e posicionamento não sobrevivem. Isso faz do contentor uma decisão a sério, e não uma preferência:
| MKV | MP4 | |
|---|---|---|
| Formatos de legendas que guarda | SRT, ASS, PGS e outros | Só mov_text |
| Estilo (tipos de letra, cores, posição) | Mantido em faixas ASS | Descartado |
| Ficheiros de tipos de letra anexados ao vídeo | Sim | Não |
| Vários idiomas num só ficheiro | Sim | Sim, como texto simples |
| Abre nos leitores integrados da Apple | Não de forma fiável | Sim |
| Abre no VLC e no mpv | Sim | Sim |
| Recodificação necessária para adicionar uma faixa | Não | Não |
A linha que costuma decidir é a da Apple. O QuickTime não abre MKV de todo e as aplicações do próprio iPhone lidam com ele de forma pouco fiável, enquanto ambos mostram bem as faixas mov_text, pelo que um ficheiro destinado a dispositivos Apple deve ser MP4, mesmo que as legendas fiquem em texto simples. O VLC, o mpv, o Plex e o Kodi reproduzem MKV com o estilo e os tipos de letra anexados intactos. Os navegadores são o terceiro caso: os seus leitores de vídeo ignoram, em geral, as faixas de legendas incorporadas e esperam um ficheiro WebVTT separado, e é por isso que a comparação de formatos trata o VTT como o formato da web.
As três formas de adicionar faixas de legendas
- MKVToolNix — gratuito, com interface gráfica, para Windows, macOS e Linux. A melhor ferramenta quando os ficheiros de legendas já existem.
- FFmpeg — gratuito, um só comando, e a única das três ferramentas que escreve MP4. A melhor ferramenta para scripts e processamento em lote.
- Sablate — para quando as legendas ainda não existem: transcreva, traduza em camadas e exporte um MKV com uma faixa por idioma.
O Subtitle Edit também consegue fazer a multiplexagem, a partir do menu Video → Add/remove embedded subtitles, e usa o FFmpeg por baixo para o fazer.
Método 1: adicionar legendas a um MKV com o MKVToolNix
O MKVToolNix é o conjunto de ferramentas de referência para ficheiros Matroska, e a sua interface gráfica reduz todo o trabalho a quatro passos:
- Instale-o a partir de mkvtoolnix.download. A versão 102.0 saiu a 14 de setembro de 2026; a versão para macOS exige o macOS 13 Ventura ou posterior.
- Abra o MKVToolNix GUI, fique no separador Multiplexer e arraste o vídeo e todos os ficheiros de legendas para a área Source files. Cada ficheiro de legendas aparece como uma faixa própria.
- Clique em cada faixa de legendas e preencha os campos Language e Track name. Ative o sinalizador Default track na única faixa que deve ser mostrada primeiro e desative-o nas outras. Deixe a opção Forced display desativada, a menos que a faixa cubra apenas linhas em língua estrangeira.
- Defina o nome do ficheiro de destino em baixo e clique no botão Start multiplexing.
Nada é codificado, por isso até um filme de duas horas fica pronto em aproximadamente o tempo que demora a copiar o ficheiro. O mesmo trabalho na linha de comandos, que é como o faria em lote:
mkvmerge -o film.subtitled.mkv film.mp4 \
--language 0:eng --track-name 0:English --default-track-flag 0:yes en.srt \
--language 0:spa --track-name 0:Spanish --default-track-flag 0:no es.srt
As opções aplicam-se ao ficheiro que vem a seguir, e 0 é o ID da faixa dentro de cada SRT, que nunca guarda mais do que uma faixa. Se os carateres acentuados saírem corrompidos, o SRT não está em UTF-8: ponha --sub-charset 0:windows-1252 (ou a codificação real do ficheiro) à frente desse ficheiro, ou volte a guardá-lo primeiro em UTF-8.
Para alterar os sinalizadores mais tarde sem voltar a multiplexar, o mkvpropedit edita diretamente o ficheiro existente:
mkvpropedit film.subtitled.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1
track:s1 é a primeira faixa de legendas. Como altera o cabeçalho do ficheiro em vez de escrever um novo, é quase instantâneo, mesmo num filme grande.
Método 2: adicionar faixas de legendas com o FFmpeg (MKV e MP4)
O FFmpeg faz a mesma multiplexagem com um só comando, e é a ferramenta a usar quando o resultado tem de ser MP4. Para um MKV com faixas em inglês e espanhol:
ffmpeg -i film.mp4 -i en.srt -i es.srt \
-map 0:v -map 0:a -map 1 -map 2 -c copy \
-metadata:s:s:0 language=eng -metadata:s:s:0 title=English \
-metadata:s:s:1 language=spa -metadata:s:s:1 title=Spanish \
-disposition:s:0 default -disposition:s:1 0 \
film.subtitled.mkv
Leia-o da esquerda para a direita: três entradas; o -map seleciona o vídeo e o áudio do filme e depois cada ficheiro de legendas, por ordem; o -c copy copia todos os fluxos em vez de os codificar; o -metadata:s:s:0 etiqueta o primeiro fluxo de legendas da saída; e as duas opções -disposition marcam o inglês como predefinido e retiram o sinalizador ao espanhol.
A lista explícita de -map é importante. Um -map 0 simples traria também qualquer faixa de legendas que a origem já tenha, e a faixa mov_text de um MP4 não pode ser copiada para MKV, por isso o comando falha com um erro antes de escrever o que quer que seja.
Para MP4, converta as legendas para mov_text e copie tudo o resto:
ffmpeg -i film.mp4 -i en.srt -i es.srt \
-map 0:v -map 0:a -map 1 -map 2 \
-c:v copy -c:a copy -c:s mov_text \
-metadata:s:s:0 language=eng -metadata:s:s:1 language=spa \
film.subtitled.mp4
O vídeo e o áudio continuam intactos; só o texto das legendas é reescrito no formato do MP4. Se a sua entrada for um ficheiro .ass com estilo, é neste passo que o estilo desaparece.
As legendas ASS com estilo pertencem ao MKV, com o tipo de letra anexado, para que o leitor as desenhe no tipo de letra que escolheu e não num substituto qualquer:
ffmpeg -i film.mp4 -i en.ass \
-map 0:v -map 0:a -map 1 -c copy \
-attach Montserrat-ExtraBold.ttf -metadata:s:t:0 mimetype=application/x-truetype-font \
-metadata:s:s:0 language=eng \
film.subtitled.mkv
A documentação do FFmpeg diz expressamente que os anexos Matroska precisam dessa etiqueta mimetype. O mpv e o VLC carregam os tipos de letra anexados quando desenham ASS, por isso o estilo viaja com o ficheiro. Que tipo de letra anexar é outra questão — o guia dos tipos de letra para legendas explica o que se lê bem e que escritas os tipos de letra de legendagem populares não conseguem desenhar.
Método 3: criar as legendas e o MKV numa só passagem
O MKVToolNix e o FFmpeg partem do princípio de que os ficheiros de legendas já existem. Muitas vezes não existem: tem uma gravação, precisa do inglês mais três traduções, e a multiplexagem ocupa apenas os últimos segundos de um trabalho muito mais longo. É para esse caso que o Sablate foi feito, e todo o percurso fica numa só aplicação:
- Transcreva o vídeo na sua própria máquina com o Whisper.
- Corrija a transcrição no editor.
- Adicione cada idioma como uma camada de tradução sobre os mesmos tempos.
- Exporte Video with switchable subtitles (.mkv).
O que fica no ficheiro é o que o Método 2 constrói à mão. O vídeo e o áudio são copiados por fluxo, por isso a exportação demora aproximadamente o mesmo que copiar o ficheiro. Cada camada de idioma passa a ser uma faixa ASS própria, no estilo das suas legendas, com o tipo de letra trocado por um que consiga desenhar a escrita desse idioma. Cada faixa recebe uma etiqueta de idioma e um nome legível, a primeira faixa é marcada como predefinida e, quando o estilo usa um dos tipos de letra de legendagem incluídos no Sablate, esse ficheiro de tipo de letra é anexado para que o estilo sobreviva noutra máquina.
Três limites, ditos sem rodeios. A exportação para MKV faz parte do Pro, um único pagamento de $29 indicado na página de preços. O Sablate não escreve faixas de legendas em MP4, porque o mov_text deitaria o estilo fora — exporte os ficheiros .srt e execute o comando do FFmpeg para MP4 acima se precisar de um. E a exportação substitui as faixas de legendas que o ficheiro de origem já tivesse, em vez de as manter; se essas faixas forem importantes, volte a acrescentá-las com o MKVToolNix.
Para a parte de transcrição e tradução, o fluxo de trabalho multilingue explica tudo passo a passo.
Que método deve usar?
Escolha em função do que já tem — ficheiros de legendas ou só o vídeo — e de onde o ficheiro tem de ser reproduzido:
| MKVToolNix | FFmpeg | Sablate | |
|---|---|---|---|
| Preço | Gratuito | Gratuito | $29 pagamento único (Pro) |
| Plataformas | Windows, Mac, Linux | Windows, Mac, Linux | Windows e Mac |
| Interface | Gráfica e linha de comandos | Linha de comandos | Gráfica |
| Multiplexa ficheiros de legendas que já tem | Sim | Sim | Parcial, através de importação para uma tarefa |
| Cria as legendas a partir da fala | Não | Não | Sim |
| Escreve MP4 com faixas de legendas | Não | Sim | Não |
| Etiquetas de idioma e sinalizador de faixa predefinida | Sim | Sim | Sim, definidos automaticamente |
| Sinalizador de faixa forçada | Sim | Sim | Não |
| Anexa tipos de letra | Sim | Sim | Sim, tipos de letra de legendagem incluídos |
| Altera sinalizadores sem voltar a multiplexar | Sim, com o mkvpropedit | Não | Não |
«Já tenho os ficheiros de legendas.» O MKVToolNix. É gratuito, mostra todas as faixas e sinalizadores antes de escrever o que quer que seja, e o trabalho demora dois minutos.
«Tenho uma temporada de episódios para processar.» O mkvmerge ou o FFmpeg dentro de um ciclo. Os dois comandos acima correm sem supervisão assim que os nomes dos ficheiros seguem um padrão.
«Tem de ser reproduzido num iPhone ou no QuickTime.» MP4 através do FFmpeg, e aceite legendas em texto simples.
«As minhas legendas são ASS com estilo.» MKV com o tipo de letra anexado. O MP4 retira o estilo à entrada.
«Só tenho o vídeo.» O Sablate, se quiser a transcrição, a tradução e o MKV multifaixa num só sítio. O Subtitle Edit é o caminho gratuito, se não se importar de montar os passos por si mesmo.
«Vai para o YouTube.» Nenhum dos dois contentores. Plataformas como o YouTube recebem o .srt ou o .vtt num envio separado.
Porque é que as legendas do meu MKV não aparecem?
A faixa quase sempre existe; há algo que decide não a mostrar. Comece por listar o que o ficheiro realmente contém:
ffprobe -v error -select_streams s -show_entries stream=index,codec_name:stream_tags=language,title:stream_disposition=default,forced -of compact=p=0 film.subtitled.mkv
Cada faixa de legendas imprime uma linha com o codec, o idioma, o nome e os sinalizadores de faixa predefinida e de faixa forçada. Se as faixas estiverem listadas, siga esta lista de verificação, pela ordem:
- Nenhuma faixa está marcada como predefinida. O leitor não tem nada que ligar sozinho. Defina o sinalizador com o
mkvpropedit, como no Método 1. - A preferência do próprio leitor tem prioridade. O VLC, o Plex e muitos televisores guardam um idioma de legendas preferido ou uma definição de legendas desligadas que se sobrepõe aos sinalizadores do ficheiro. Verifique o leitor antes do ficheiro.
- Uma faixa completa está marcada como forçada. Os espectadores que desligaram as legendas continuam a receber todas as linhas. O sinalizador de faixa forçada só pertence a faixas parciais.
- A faixa do MP4 é ignorada. Muitos leitores saltam o
mov_textem silêncio. Se o ficheiro não tiver de ser MP4, volte a multiplexá-lo para MKV. - Os acentos chegam como lixo. O SRT de origem foi guardado numa codificação antiga. Volte a guardá-lo em UTF-8 e multiplexe de novo, ou indique a codificação com
--sub-charsetnomkvmergeou com-sub_charencantes da entrada de legendas no FFmpeg. - O texto com estilo aparece num tipo de letra simples. A faixa ASS indica um tipo de letra que a máquina de reprodução não tem. Anexe o ficheiro do tipo de letra, como no último comando do FFmpeg.
A multiplexagem é a parte barata da entrega de legendas: um minuto no MKVToolNix, uma linha no FFmpeg, nada recodificado. A parte cara é ter, antes de mais, bons ficheiros de legendas em todos os idiomas. Se já os tem, as ferramentas gratuitas acima são tudo o que precisa. Se só tem a gravação, transfira o Sablate para Windows ou Mac, transcreva-a e traduza-a, e deixe que a exportação escreva as faixas, as etiquetas e os sinalizadores.