Bir MKV dosyasına altyazıları nasıl ekleyebilir ve silebilirim?


28

Birkaç altyazı seçeneği olan kaliteli bir MKV dosyasına sahibim. Listeye ek bir altyazı dosyası eklemek istiyorum. OSX kullanıyorum.

Bazı çevrimiçi arama beni video dönüştürücüler kullanmamı sağladı ve filmi temelde yeni bir dosyaya dönüştürdü. Bu bana gerçekten overkill görünüyor. Artı, önceki altyazıları ve bazı görüntü kalitesini de kaybedebilirim.

Yanıtlar:


41

Altyazıları kaldırma:

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

Altyazı eklemek:

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

Altyazıları çıkarma:

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 ve mkvextract ile kurulabilir brew install mkvtoolnix.


2
MKVMerge GUI, Mac OS X'te zaten mevcut, ancak yine de, konsol hayranları için nasıl iyi bir yöntem.
Bora,

Altyazı eklemek için yukarıdaki komutların, dosyayı oynatırken altyazıları "varsayılan olarak etkin" olarak ayarladığını unutmayın. (Bu bayrak MKVMerge GUI kullanılarak onaylanabilir.) Bunu önlemek için kullanın --default-track '0:0'.
Mathias Bynens

4

Altyazıları göstermenin iki temel yolu vardır. Pikselleri videonun içine kodlayabilirsiniz. Buna "sert engelleme" denir. Buradaki avantaj, video oynatıcı için basitlik, sadece bir video akışı. Dezavantajları, videoyu yeniden kodlamak zorunda olmanız, zaman alan ve bazı aslına uygunluk kayıplarıdır. Daha iyi bir çeviri elde ederseniz, videodaki piksellerdir. Ve sadece bir dile sahip olabilirsin.

Biraz daha iyi olan, video akışından ayrı bir yerde bir metin dosyasına sahip olan "softsubbing". Altyazı dosyalarının birçok farklı formatı vardır, fakat temellerinde hepsinin özünde "metin, hangi saatte başlar, saat kaç kaldırılır" bulunur. Bazıları ekrandaki renkler ve yön gibi ek özelliklere sahiptir. Bunun avantajı, birden fazla dile sahip olmanız (bir DVD düşünün, birden fazla dile sahip olmanız) ve dosyadaki yazım hatalarını ve benzerlerini düzeltebilmenizdir. Ve eğer altyazılara ihtiyacınız yoksa, sadece onları kapatın.

Softsubs ayrı dosyalar olabilir - çoğu oyuncu otomatik olarak ana video ile aynı isimde (farklı uzantılarda) altyazıları arayacaktır. Veya bazı konteyner dosya formatları (MKV gibi) onları içine gömülü yapabilir. MKV dosya araçları için MKVtoolnix (bir mac bağlantı noktası var) göz atın . Bu, reşit kodlama olmadan softsubs yerleştirmenizi sağlar.

Tüm oyuncuların tüm formatları desteklemediğini unutmayın. Benim deneyimim, XBMC'nin SSA dosyalarıyla ilgili sorunları var, ancak daha basit SRT dosyaları gayet iyi. VLC, platformunuzda destekleniyorsa her şeyi oynar.


1
İyi cevap, bazı yumuşak altyazıların - özellikle de DVD altyazılarının - metin tabanlı değil bitmap tabanlı olduğu belirtilmelidir. Bunların temel etkisi, onları -_-
evilsoup

@ evilsoup teşekkürler, bunu bilmiyordum.
Rich Homolka

1
Evet, IDX + SUB VOBsub , burada IDX bir metin dosyasıdır ancak SUB bitmapler içerir.
Karan

doğrudan indirme sayfasına bağlantı değiştirildi.
Bora

0

Bunun eski bir soru olduğunun farkındayım ve user495470cevabı 2013 itibariyle kabul edildi, ancak sorunun bir kısmı dosyalara altyazı eklemekle ilgili olduğu için bu yeni ilaveyi eklemek istedim.

Temel olarak, onlarca .assaltyazıyı MKV dosyalarına benzer şekilde birleştirmek zorunda kaldım , bu yüzden bir seferde bu komutu yapmak onu kesmiyordu. Bu yüzden, .assdosyalar için çalıştırıldığı geçerli dizini arayacak ve beklendiği gibi birleştirecek bu basit Bash komut dosyasını hazırladım .

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

Tabii ki, bu basit senaryo, alt yazıların İngilizce olduğunu ve onları böyle birleştirdiğini varsayar, ancak kullanım ihtiyacına göre elle ayarlanabilir; Altyazıları otomatik olarak MKV ile birleştirmenin büyük sorunu, bunun gibi basit bir senaryo ile çözüldü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.