Hilfe zum MKV-zu-MP4-Remux-Skript

Hilfe zum MKV-zu-MP4-Remux-Skript

Überblick:

Ich versuche, meine hauptsächlich MKV-Bibliothek in MP4 umzuwandeln. Ich habe ein Skript, das die Untertitel aus den Videodateien extrahiert hat.

Ich habe ein weiteres Skript, das alle MKV-Dateien in einem bestimmten Ordner remuxt. Was ich brauche, ist, dass das SkriptnurRemux-Ordner, in denen es erkennt, dass sich .srt-Dateien befinden.

Alle .srt-Dateien enden mit ***.eng.srt

Hier ist mein aktuelles Remux-Skript:

#!/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

Danke! Jede Hilfe wird sehr geschätzt.

Antwort1

Ich glaube, Sie suchen das hier:

#!/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

Ich habe es entfernt, IFS='\n'da es dort nichts Nützliches bewirkt. Ihre forSchleife ist auch bei Namen mit Leerzeichen ziemlich sicher, solange Sie Ihre Variablen in Anführungszeichen setzen.

Die [ -e foo ]Tests auf die Existenz von foo. Umgekehrt [ ! -e foo ]ist wahr, wenn es kein gibt foo. In diesem Fall fooist ein Glob ( *.srt), sodass der Test falsch ist, wenn übereinstimmende Dateien gefunden werden. Im obigen Skript &&bedeutet dies, dass, wenn keine srtDateien gefunden werden, die Fehlermeldung ausgegeben und das Skript beendet wird.

verwandte Informationen