El problema es que los videoplayers en Ubuntu tienen un problema con los subtítulos integrados de Europa Central. La solución es extraerlos. ¿Alguien sabe si hay un comando en la terminal o un programa para extraer el subtítulo de un archivo mkv?
El problema es que los videoplayers en Ubuntu tienen un problema con los subtítulos integrados de Europa Central. La solución es extraerlos. ¿Alguien sabe si hay un comando en la terminal o un programa para extraer el subtítulo de un archivo mkv?
Respuestas:
Instalar mkvtoolnix
con sudo apt-get install mkvtoolnix
.
Ejecutar desde la terminal: mkvextract tracks <your_mkv_video> <track_numer>:<subtitle_file.srt>
Utilícelo mkvinfo
para obtener información sobre pistas.
Con esta utilidad, puede extraer cualquier pista, incluso audio o video.
mkvextract
determina el formato de salida del archivo por tipo de pista, no por la extensión dada (así que verifique el tipo según lo informado por mkvmerge -i <filename>
).
puedes usar mkvtoolnix.
sudo apt-get install mkvtoolnix
Otro consejo ahora porque los archivos mkv pueden contener muchos subtítulos, por lo que el consejo es que este script puede buscar el idioma que desee, por ejemplo, si quiere inglés, descargará solo inglés.
Guió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
Guarde este script nameyouwant.sh y hágalo ejecutable
Ahora en el terminal, cambie el directorio a la carpeta de script y escriba
./nameyouwant.sh /pathtosave
mkvinfo
como dice cosas como "Número de pista: 2 (ID de pista para mkvmerge y mkvextract: 1)" que son confusas. usemkvmerge -i <filename>