¡Hola, Invitado! (Iniciar sesiónRegístrate)
Hora: 22 Nov 2024, 02:53

Ayuda con MkvToolnix (Python)

01 Feb 2022, 20:18 (Este mensaje fue modificado por última vez en: 02 Feb 2022 01:19 por Johange)
Mensaje: #1

Ayuda con MkvToolnix (Python)

Buenas a todos! A como ven me preguntaba si algún programador me pueda ayudar con el tema en cuestíon...

Encontré un cuaderno ejecutable en Google Colab para extraer archivos como audio y subtítulos de los mkv, que funciona muy bien y de forma automatizada mientras se encuentren dentro de la carpeta que selecciones. pero que aún no puedo extraer los archivos adjuntos de una sola vez

Cabe mencionar que esto lo hago de forma online sin tener que descargar los archivos de video a mi computadora, por lo que no gasto almacenamiento ni internet

Este script me permite extraerlos de forma manual pero es molesto y tedioso, imagínense si hay hasta 20 fuentes adjuntas en un mkv, y para eso tengo que modificar la lineá que se encuentra en negrita en la cita.
Cita:import os

path = "ruta del archibo de video" #@param {type:"string"}
output_path = "directorio de salida" #@param {type:"string"}
file_extension = "jpg" #@param ["jpg", "png", "otf", "ttf"] (esto lo que hace es cambiar la extensión del archivo adjunto, pero se puede poner directamente en la linea de código)
os.environ['inputFile'] = path
os.environ['output'] = output_path
os.environ['fileExt'] = file_extension

!mkvextract attachments "$inputFile" 1:"$output"/1."$fileExt" 2:"$output"/2."$fileExt" 3:"$output"/"El nombre puede ser el que desees".ttf
En path ubico donde se encuentra alojado el video que me interesa
output_path es donde guardo el video
file_extension, aquí es donde debo ver si el archivo adjunto es una imagen o fuente
y lo demás pues es el script, este funciona muy bien...
1:"$output"/1."$fileExt"
El 1 en verde es el ID del archivo adjunto, mientras que el que está en negro es el nombre de salida.
La cosa con esto es que en un mkv no todos los archivos adjuntos son imgenes, entonces hay que estar cambiando la extensiones, agregando o quitanto los ID y ejecutando la celda tanto como sea necesario para extraer todos los archivos y es bastante molesto..

Yo lo que quiero obtener es algo más automatizado que seleccione la extensión de archivo correspondiente y de paso el nombre que le corresponde, ese es mi sueño jajaja, a como digo, no soy un programador, he intentado automatizarlo de muchas maneras pero no se me da TT-TT
o al menos que el script haga una secuencia de conteo donde ponga las ID de cada archivo adjunto

encontré este código que según es para automatizar la extracción de archivos adjuntos...:
Cita:#find the total of attachment
A=$(mkvmerge -i input.mkv | grep -i attachment
| awk '{printf $3 "\n"}'
| sed 's;\:;;'
| awk 'END { print NR }')

#extract it
for (( i=1; i<=$A; i++ ))
do
font[${i}]="$(mkvmerge -i input.mkv | grep -i attachment
| awk '{for (i=11; i <= NF; i++) printf($i"%c" , (i==NF)?ORS:OFS) }'
| sed "s/'//g"
| awk "NR==$i")"

mkvextract attachments input.mkv $i:"${font[${i}]}"
done
...pero no se como adaptarlo al script que tengo, no se si realmente funciona ni cuales son los archivos adjuntos que extrae.

Si sabes de esto te agradecería mucho si me echaras una manito jajaja...
Dejo aquí el Cuaderno para que lo puedan ejecutar en google colab y ver que es lo que puedo mejorar....
Dejo la documentación de mkvmerge y mkvextract

PD: al final del cuaderno está un script para agregar subtítulos y archivos adjuntos pero no funciona o al menos yo no he dado con lo manera de usarlo XD


Usuario(s) navegando en este tema: 1 invitado(s)