¿Cómo agregar y eliminar subtítulos en un archivo MKV?

28

Tengo un archivo MKV de buena calidad que tiene varias opciones de subtítulos. Quiero agregar un archivo de subtítulos adicional a la lista. Estoy usando OSX.

Algunas búsquedas en línea me llevaron a usar convertidores de video y básicamente volver a codificar la película en un nuevo archivo. Eso me parece realmente exagerado. Además, puedo perder los subtítulos anteriores y algo de calidad de imagen en el camino.

nute
fuente

Respuestas:

41

Eliminar subtítulos:

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

Agregar subtítulos:

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

Extrayendo subtítulos:

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

mkvmerge y mkvextract se pueden instalar con brew install mkvtoolnix.

Lri
fuente
2
MKVMerge GUI ya está disponible en Mac OS X, pero, sin embargo, es una buena forma de hacerlo para los fanáticos de la consola.
Bora
Tenga en cuenta que los comandos anteriores para agregar subtítulos también establecen los subtítulos como "habilitados por defecto" cuando se reproduce el archivo. (Este indicador se puede confirmar con la GUI de MKVMerge). Para evitar esto, use --default-track '0:0'.
Mathias Bynens
4

Hay dos formas básicas de mostrar subtítulos. Puede codificar los píxeles en el video en sí. Esto se llama "hardsubbing". La ventaja aquí es la simplicidad para el reproductor de video, es solo una transmisión de video. Las desventajas son que tuvo que volver a codificar el video, lo que lleva tiempo y tiene cierta pérdida de fidelidad. Si obtienes una mejor traducción, bueno, son píxeles en el video. Y solo puedes tener un idioma.

Lo que es algo mejor es "softsubbing", que es tener un archivo de texto en algún lugar, separado de la transmisión de video. Hay muchos formatos diferentes de archivos de subtítulos, pero en su base todos tienen "texto, comenzar a qué hora, eliminar a qué hora" en su núcleo. Algunos tienen características adicionales como colores y orientación en la pantalla. La ventaja de esto es que puede tener varios idiomas (piense en un DVD, tiene varios idiomas disponibles) y puede corregir errores tipográficos y demás en el archivo. Y si no necesita subtítulos, simplemente desactívelos.

Los softsubs pueden ser archivos separados: la mayoría de los reproductores buscarán automáticamente subtítulos con el mismo nombre (extensión diferente) que el video principal. O ciertos formatos de archivo contenedor (como MKV) pueden tenerlos incrustados dentro. Echa un vistazo a MKVtoolnix (hay un puerto mac) para las herramientas de archivos MKV. Esto debería permitirle incrustar softsubs sin volver a codificar.

Tenga en cuenta que no todos los reproductores pueden admitir todos los formatos. Mi experiencia es que XBMC tiene problemas con los archivos SSA, pero los archivos SRT mucho más simples están bien. VLC reproducirá cualquier cosa, si es compatible con su plataforma.

Rich Homolka
fuente
1
Buena respuesta, aunque debe tenerse en cuenta que algunos subtítulos blandos, especialmente los subtítulos de DVD, están basados ​​en mapas de bits, en lugar de texto. El principal efecto es hacerlos casi imposibles de editar -_-
evilsoup
@evilsoup gracias, no lo sabía.
Rich Homolka
1
Sí, IDX + SUB VOBsub , donde IDX es un archivo de texto pero SUB contiene mapas de bits.
Karan
Enlace cambiado a la página de descarga directa.
Bora
0

Me doy cuenta de que esta es una pregunta vieja y user495470la respuesta se ha aceptado a partir de 2013, pero como parte de la pregunta es sobre agregar subtítulos a los archivos, quería agregar esta nueva adición.

Básicamente, necesitaba fusionar docenas de .asssubtítulos en archivos MKV con nombres similares, por lo que hacer este comando a la vez no era suficiente. Así que preparé este simple script Bash que buscará los .assarchivos en el directorio actual desde el que se ejecuta y luego los fusionará como se esperaba.

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/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

Por supuesto, este script simple asume que los subtítulos son en inglés y los fusiona como tal, pero que pueden ajustarse manualmente por necesidad de uso; El gran problema de fusionar automáticamente los subtítulos con el MKV se resuelve con un script simple como este.

JakeGould
fuente