Masalahnya adalah bahwa videoplayers di Ubuntu memiliki masalah dengan subtitle eropa pusat terintegrasi. Solusinya adalah mengekstraknya. Apakah ada yang tahu jika ada perintah di terminal atau program untuk mengekstrak subtitle dari file mkv?
Masalahnya adalah bahwa videoplayers di Ubuntu memiliki masalah dengan subtitle eropa pusat terintegrasi. Solusinya adalah mengekstraknya. Apakah ada yang tahu jika ada perintah di terminal atau program untuk mengekstrak subtitle dari file mkv?
Jawaban:
Instal mkvtoolnix
dengan sudo apt-get install mkvtoolnix
.
Jalankan dari terminal: mkvextract tracks <your_mkv_video> <track_numer>:<subtitle_file.srt>
Gunakan mkvinfo
untuk mendapatkan informasi tentang trek.
Dengan menggunakan utilitas ini Anda dapat mengekstrak lagu apa pun, bahkan audio atau video.
mkvextract
menentukan format output file berdasarkan tipe trek, bukan ekstensi yang diberikan (jadi periksa tipe seperti yang dilaporkan oleh mkvmerge -i <filename>
).
Anda dapat menggunakan mkvtoolnix.
sudo apt-get install mkvtoolnix
Tip lain sekarang karena file mkv dapat berisi banyak subtitle, jadi tipnya adalah skrip ini yang dapat Anda cari bahasa yang Anda inginkan, jadi misalnya jika Anda ingin bahasa Inggris, itu akan mengunduh hanya bahasa Inggris.
Skrip:
#!/bin/bash
# Extract subtitles from each MKV file in the given directory
# If no directory is given, work in local dir
if [ "$1" = "" ]; then
DIR="."
else
DIR="$1"
fi
# Get all the MKV files in this dir and its subdirs
find "$DIR" -type f -name '*.mkv' | while read filename
do
# Find out which tracks contain the subtitles
mkvmerge -i "$filename" | grep 'subtitles' | while read subline
do
# Grep the number of the subtitle track
tracknumber=`echo $subline | egrep -o "[0-9]{1,2}" | head -1`
# Get base name for subtitle
subtitlename=${filename%.*}
# Extract the track to a .tmp file
`mkvextract tracks "$filename" $tracknumber:"$subtitlename.srt.tmp" > /dev/null 2>&1`
`chmod g+rw "$subtitlename.srt.tmp"`
# Do a super-primitive language guess: ENGLISH
langtest=`egrep -ic ' you | to | the ' "$subtitlename".srt.tmp`
trimregex=""
# Check if subtitle passes our language filter (10 or more matches)
if [ $langtest -ge 10 ]; then
# Regex to remove credits at the end of subtitles (read my reason why!)
`sed 's/\r//g' < "$subtitlename.srt.tmp" \
| sed 's/%/%%/g' \
| awk '{if (a){printf("\t")};printf $0; a=1; } /^$/{print ""; a=0;}' \
| grep -iv "$trimregex" \
| sed 's/\t/\r\n/g' > "$subtitlename.srt"`
`rm "$subtitlename.srt.tmp"`
`chmod g+rw "$subtitlename.srt"`
else
# Not our desired language: add a number to the filename and keep anyway, just in case
`mv "$subtitlename.srt.tmp" "$subtitlename.$tracknumber.srt" > /dev/null 2>&1`
fi
done
done
Simpan skrip ini dengan nama youwant.sh dan buat itu bisa dieksekusi
Sekarang di terminal ubah direktori ke folder skrip dan tulis
./nameyouwant.sh /pathtosave
mkvinfo
seperti yang dikatakan hal-hal seperti "Nomor trek: 2 (ID trek untuk mkvmerge & mkvextract: 1)" yang membingungkan. gunakanmkvmerge -i <filename>