Como adicionar e remover legendas em um arquivo MKV?

24

Eu tenho um arquivo MKV de boa qualidade que possui várias opções de legendas. Eu quero adicionar um arquivo de legenda adicional à lista. Estou usando o OSX.

Algumas pesquisas on-line me levaram a usar conversores de vídeo e, basicamente, recodificaram o filme em um novo arquivo. Isso parece muito exagerado para mim. Além disso, posso perder as legendas anteriores e alguma qualidade de imagem ao longo do caminho.

    
por nute 18.06.2013 / 17:30

3 respostas

35

Como remover legendas:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers

Adicionando legendas:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt

Extraindo legendas:

mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done

O mkvmerge e o mkvextract podem ser instalados com brew install mkvtoolnix .

    
por 19.06.2013 / 00:24
4

Existem duas maneiras básicas de mostrar legendas. Você pode codificar os pixels no próprio vídeo. Isso é chamado de "hardsubbing". A vantagem aqui é a simplicidade do player de vídeo, é apenas um fluxo de vídeo. As desvantagens são que você teve que reencodificar o vídeo, o que leva tempo e tem alguma perda de fidelidade. Se você conseguir uma tradução melhor, bem, são pixels no vídeo. E você só pode ter um idioma.

O que é um pouco melhor é "softsubbing", que é ter um arquivo de texto em algum lugar, separado do fluxo de vídeo. Existem muitos formatos diferentes de arquivos de legendas, mas em sua base todos eles têm "texto, iniciam a hora, remova a hora" em seu núcleo. Alguns possuem recursos adicionais, como cores e orientação na tela. A vantagem disso é que você pode ter vários idiomas (pense em um DVD, você tem vários idiomas disponíveis) e você pode corrigir erros de digitação e outros no arquivo. E se você não precisa de legendas, bem, basta desligá-las.

Os Softsubs podem ser arquivos separados - a maioria dos jogadores procurará legendas com o mesmo nome (extensão diferente) do vídeo principal. Ou determinados formatos de arquivo de contêiner (como o MKV) podem tê-los embutidos. Confira MKVtoolnix (há uma porta mac) para ferramentas de arquivos MKV. Isso deve permitir incorporar softsubs sem reencodar.

Note que nem todos os jogadores podem suportar todos os formatos. Minha experiência é que o XBMC tem problemas com arquivos SSA, mas os arquivos SRT muito mais simples são bons. O VLC vai jogar qualquer coisa, se for suportado na sua plataforma.

    
por 18.06.2013 / 17:57
0

Sei que essa é uma pergunta antiga e a resposta do user495470 foi aceita em 2013, mas desde parte da questão é adicionar legendas aos arquivos, eu queria adicionar essa nova adição.

Basicamente, eu precisava mesclar dezenas de .ass de legendas em arquivos MKV com nomes parecidos, então fazer este comando de cada vez não o estava cortando. Então, criei este script Bash simples que pesquisará o diretório atual do .ass e mesclá-los conforme o esperado.

find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
  while read FILEPATH
  do
    DIRNAME=$(dirname "${FILEPATH}");
    BASENAME=$(basename "${FILEPATH}");
    FILENAME="${BASENAME%.*}";
    EXTENSION="${BASENAME##*.}"
    mkvmerge -o "/Users/jack/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

É claro que esse script simples pressupõe que as legendas são em inglês e as mescla como tal, mas que podem ser ajustadas manualmente de acordo com a necessidade de uso; o grande problema de mesclar automaticamente as legendas com o MKV é resolvido por um script simples como este.

    
por 08.01.2018 / 03:39