Vấn đề là các videoplayers trong Ubuntu có vấn đề với phụ đề trung tâm châu Âu tích hợp. Giải pháp là trích xuất chúng. Có ai biết nếu có một lệnh trong thiết bị đầu cuối hoặc một chương trình để trích xuất phụ đề từ một tệp mkv?
Vấn đề là các videoplayers trong Ubuntu có vấn đề với phụ đề trung tâm châu Âu tích hợp. Giải pháp là trích xuất chúng. Có ai biết nếu có một lệnh trong thiết bị đầu cuối hoặc một chương trình để trích xuất phụ đề từ một tệp mkv?
Câu trả lời:
Cài đặt mkvtoolnix
với sudo apt-get install mkvtoolnix
.
Chạy từ thiết bị đầu cuối: mkvextract tracks <your_mkv_video> <track_numer>:<subtitle_file.srt>
Sử dụng mkvinfo
để có được thông tin về các bài hát.
Sử dụng tiện ích này, bạn có thể trích xuất bất kỳ bản nhạc, thậm chí âm thanh hoặc video.
bạn có thể sử dụng mkvtoolnix.
sudo apt-get install mkvtoolnix
Một mẹo khác bây giờ vì các tệp mkv có thể chứa nhiều phụ đề, vì vậy mẹo này là tập lệnh này mà bạn có thể tìm kiếm ngôn ngữ bạn muốn, vì vậy, nếu bạn muốn tiếng Anh, nó sẽ chỉ tải xuống tiếng Anh.
Kịch bản :
#!/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
Lưu tập lệnh này nameyouwant.sh và làm cho nó có thể thực thi được
Bây giờ trong thư mục thay đổi thiết bị đầu cuối vào thư mục script và viết
./nameyouwant.sh /pathtosave
mkvinfo
vì nó nói những thứ như "Số theo dõi: 2 (ID theo dõi cho mkvmerge & mkvextract: 1)" gây nhầm lẫn. sử dụngmkvmerge -i <filename>