Come aggiungere e rimuovere i sottotitoli in un file MKV?


28

Ho un file MKV di buona qualità che ha diverse opzioni di sottotitoli. Voglio aggiungere un file di sottotitoli aggiuntivo all'elenco. Sto usando OSX.

Alcune ricerche online mi hanno portato a utilizzare i convertitori video e sostanzialmente ricodificare il film in un nuovo file. Mi sembra davvero eccessivo. Inoltre potrei perdere i sottotitoli precedenti e una certa qualità dell'immagine lungo la strada.

Risposte:


41

Rimozione dei sottotitoli:

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

Aggiunta di sottotitoli:

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

Estrarre i sottotitoli:

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 e mkvextract possono essere installati con brew install mkvtoolnix.


2
L'interfaccia grafica di MKVMerge è già disponibile su Mac OS X, ma è comunque un ottimo modo per i fan della console.
Bora,

Si noti che i comandi precedenti per aggiungere i sottotitoli impostano anche i sottotitoli come "abilitati per impostazione predefinita" durante la riproduzione del file. (Questo flag può essere confermato utilizzando la GUI di MKVMerge.) Per evitare ciò, utilizzare --default-track '0:0'.
Mathias Bynens,

4

Esistono due modi di base per mostrare i sottotitoli. Puoi codificare i pixel nel video stesso. Questo si chiama "hardsubbing". Il vantaggio qui è la semplicità per il lettore video, è solo un flusso video. Gli svantaggi sono che hai dovuto ricodificare il video, il che richiede tempo e ha una certa perdita di fedeltà. Se ottieni una traduzione migliore, beh, sono i pixel nel video. E puoi avere solo una lingua.

Ciò che è in qualche modo migliore è "softsubbing", che è di avere un file di testo da qualche parte, separato dal flusso video. Esistono molti formati diversi di file di sottotitoli, ma alla base hanno tutti "testo, inizia a che ora, rimuovi a che ora" nel loro nucleo. Alcuni hanno funzionalità aggiuntive come i colori e l'orientamento sullo schermo. Il vantaggio è che puoi avere più lingue (pensa a un DVD, hai più lingue disponibili) e puoi correggere errori di battitura e simili nel file. E se non hai bisogno dei sottotitoli, li spegni.

I softsub possono essere file separati: la maggior parte dei lettori cercherà automagicamente i sottotitoli con lo stesso nome (estensione diversa) del video principale. O alcuni formati di file contenitore (come MKV) possono averli incorporati all'interno. Dai un'occhiata a MKVtoolnix (c'è una porta mac) per gli strumenti di file MKV. Ciò dovrebbe consentire di incorporare softsub senza ricodificare.

Nota che non tutti i giocatori possono supportare tutti i formati. La mia esperienza è che XBMC ha problemi con i file SSA, ma i file SRT molto più semplici vanno bene. VLC riprodurrà qualsiasi cosa, se è supportato sulla tua piattaforma.


1
Buona risposta, anche se va notato che alcuni sottotitoli soft - in particolare i sottotitoli DVD - sono basati su bitmap, piuttosto che su testo. Il cui effetto principale è renderli quasi impossibili da modificare -_-
evilsoup

@evilsoup grazie, non lo sapevo.
Rich Homolka,

1
Sì, IDX + SUB VOBsub , dove IDX è un file di testo ma SUB contiene bitmap.
Karan,

collegamento modificato alla pagina di download diretto.
Bora,

0

Mi rendo conto che questa è una vecchia domanda e user495470la risposta è stata accettata dal 2013, ma poiché parte della domanda riguarda l'aggiunta di sottotitoli ai file, ho voluto aggiungere questa nuova aggiunta.

Fondamentalmente, avevo bisogno di unire dozzine di .asssottotitoli in file MKV simili, quindi fare questo comando alla volta non lo tagliava. Così ho creato questo semplice script di Bash che cercherà i file nella directory corrente da cui è stato avviato .asse li unirà come previsto.

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

Naturalmente, questo semplice script presuppone che i sottotitoli siano in inglese e li unisce in quanto tali, ma che possono essere regolati manualmente in base alle esigenze di utilizzo; il grosso problema di fondere automaticamente i sottotitoli con MKV è risolto da un semplice script come questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.