Bagaimana cara menambah dan menghapus subtitle dalam file MKV?

28

Saya memiliki file MKV berkualitas baik yang memiliki beberapa opsi subtitle. Saya ingin menambahkan file subtitle tambahan ke daftar. Saya menggunakan OSX.

Beberapa pencarian daring membuat saya menggunakan konverter video, dan pada dasarnya menyandikan ulang film tersebut menjadi file baru. Bagi saya itu kelihatannya benar-benar berlebihan. Plus, saya mungkin kehilangan subtitle sebelumnya, dan beberapa kualitas gambar di sepanjang jalan.

nute
sumber

Jawaban:

41

Menghapus subtitle:

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

Menambahkan subtitle:

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

Ekstrak subtitle:

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 dan mkvextract dapat diinstal dengan brew install mkvtoolnix.

Lri
sumber
2
GUI MKVMerge sudah tersedia di Mac OS X, namun demikian, ini adalah cara yang bagus untuk penggemar konsol.
Bora
Perhatikan bahwa perintah di atas untuk menambahkan subtitle juga mengatur subtitle sebagai "diaktifkan secara default" saat memutar file. (Bendera ini dapat dikonfirmasi menggunakan GUI MKVMerge.) Untuk menghindarinya, gunakan --default-track '0:0'.
Mathias Bynens
4

Ada dua cara dasar untuk menampilkan teks film. Anda dapat menyandikan piksel ke dalam video itu sendiri. Ini disebut "hardsubbing". Keuntungannya di sini adalah kesederhanaan untuk pemutar video, itu hanya aliran video. Kerugiannya adalah Anda harus memasukkan kembali kode video, yang membutuhkan waktu, dan kehilangan beberapa kesetiaan. Jika Anda mendapatkan terjemahan yang lebih baik, well, itu piksel dalam video. Dan Anda hanya dapat memiliki satu bahasa.

Yang agak lebih baik adalah "softsubbing", yaitu memiliki file teks di suatu tempat, terpisah dari aliran video. Ada banyak format file subtitle yang berbeda, tetapi pada dasarnya mereka semua memiliki "teks, mulai jam berapa, hapus jam berapa" pada intinya. Beberapa memiliki fitur tambahan seperti warna dan orientasi pada layar. Keuntungannya adalah Anda dapat memiliki banyak bahasa (bayangkan DVD, Anda memiliki banyak bahasa) dan Anda dapat memperbaiki kesalahan ketik dan semacamnya dalam file. Dan jika Anda tidak membutuhkan subtitle, cukup matikan saja.

Softsubs dapat berupa file yang terpisah - sebagian besar pemain secara otomatis akan mencari subtitle dengan nama yang sama (ekstensi berbeda) sebagai video utama. Atau format file kontainer tertentu (seperti MKV) dapat dimasukkan ke dalamnya. Lihat MKVtoolnix (ada port mac) untuk alat file MKV. Ini seharusnya memungkinkan Anda menanamkan softsub tanpa memasukkan ulang.

Perhatikan bahwa tidak semua pemain dapat mendukung semua format. Pengalaman saya adalah bahwa XBMC memiliki masalah dengan file SSA, tetapi file SRT yang jauh lebih sederhana baik-baik saja. VLC akan memainkan apa saja, jika didukung di platform Anda.

Homolka yang kaya
sumber
1
Jawaban yang bagus, meskipun perlu dicatat bahwa beberapa subtitle lunak - terutama subtitle DVD - berbasis bitmap, bukan berbasis teks. Efek utama yang membuat mereka hampir mustahil untuk mengedit -_-
evilsoup
@ evilsoup terima kasih, tidak tahu itu.
Rich Homolka
1
Yap, IDX + SUB VOBsub , di mana IDX adalah file teks tetapi SUB berisi bitmap.
Karan
tautan berubah ke halaman unduhan langsung.
Bora
0

Saya menyadari ini adalah pertanyaan lama dan user495470jawabannya telah diterima pada tahun 2013, tetapi karena sebagian dari pertanyaannya adalah tentang menambahkan subtitle ke file, saya ingin menambahkan tambahan baru ini.

Pada dasarnya, saya perlu menggabungkan lusinan .asssubtitle ke dalam file-file MKV yang serupa, jadi melakukan satu perintah ini pada satu waktu tidak memotongnya. Jadi saya membuat skrip Bash sederhana ini yang akan mencari direktori saat ini dijalankan dari .assfile dan kemudian menggabungkannya seperti yang diharapkan.

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

Tentu saja, skrip sederhana ini mengasumsikan bahwa subtitle adalah bahasa Inggris dan menggabungkannya, tetapi yang dapat disesuaikan secara manual sesuai kebutuhan penggunaan; masalah besar secara otomatis menggabungkan subtitle dengan MKV diselesaikan dengan skrip sederhana seperti ini.

JakeGould
sumber