Ayuda con el script Remux de MKV a MP4

Ayuda con el script Remux de MKV a MP4

Descripción general:

Estoy intentando remuxar mi biblioteca principalmente MKV a MP4. Tengo un guión que revisó y extrajo subtítulos de los archivos de video.

Tengo otro script que remuxificará cualquier archivo .mkv en una carpeta determinada. Lo que necesito es que el guiónsolocarpetas remux donde detecta que hay archivos .srt.

Todos los archivos .srt terminan con ***.eng.srt

Aquí está mi script remux actual:

#!/bin/bash 
IFS=$'\n' 
clear 
for filename in *.mkv 
do 
echo "$filename" 
newfilename="${filename%.mkv}.mp4" 
echo "${newfilename}" 
ffmpeg -fix_sub_duration -i $filename -c:v copy -c:a copy -c:s mov_text $newfilename 
done

¡Gracias! cualquier ayuda será apreciada.

Respuesta1

Creo que estás buscando esto:

#!/bin/bash 

clear
for filename in *.mkv 
do 
    ## Exit if there are no srt files
    [ ! -e *.srt ] && echo "No .srt files found, exiting" && exit
    echo "$filename" 
    newfilename="${filename%.mkv}.mp4" 
    echo "${newfilename}" 
    ffmpeg -fix_sub_duration -i "$filename" -c:v copy -c:a copy -c:s mov_text "$newfilename" 
done

Eliminé el IFS='\n'porque no hace nada útil allí, su forbucle es bastante seguro incluso con nombres que contienen espacios en blanco siempre que cite sus variables.

Las [ -e foo ]pruebas de la existencia de foo. Por el contrario, [ ! -e foo ]es cierto si no hay foo. En este caso, fooes un globo ( *.srt), por lo que la prueba será falsa si se encuentra algún archivo coincidente. En el script anterior, &&significa que si no srtse encuentran archivos, se imprimirá el mensaje de error y el script se cerrará.

información relacionada