Sie sagen nicht, aber soll es nicht für DTS-Audio laufen? In jedem Fall funktioniert diese Zeile nicht richtig:
if [[ $video_good="true" && $audio_good="true" ]] ; then
Da es keine Leerzeichen um die Gleichheitszeichen gibt, werden sie als Teil von Zeichenfolgen und nicht als Vergleichsoperatoren analysiert. Verwenden Sie stattdessen diese:
if [[ $video_good = "true" && $audio_good = "true" ]] ; then
(Doppelte Gleichheitszeichen, wie Sie sie in den früheren Vergleichen verwendet haben, würden ebenfalls funktionieren. Aber auch hier sind Leerzeichen erforderlich.)
Übrigens empfehle ich nachdrücklich, doppelte Anführungszeichen zu verwenden (dh "$f"
statt nur $f
). Aber die Art $cli_video
und Weise, wie Sie sie verwenden und $cli_audio
nicht funktionieren würden, wenn sie in doppelte Anführungszeichen gesetzt würden, also tun Sie es ihnen nicht an. Der richtige Weg, um solche Parameter zu speichern, ist die Verwendung von Arrays anstelle von einfachen Variablen wie diese:
cli_video=(-c:v copy) ... cli_audio=(-c:a copy) ... ffmpeg -i "$f" "$" "$" "$(basename "$f")"