Вы не говорите, но предполагается, что это не запускать для DTS аудио? В любом случае, эта строка не будет работать правильно:
if [[ $video_good="true" && $audio_good="true" ]] ; then
Поскольку вокруг знаков равенства нет пробелов, они анализируются как часть строк, а не как операторы сравнения. Используйте это вместо:
if [[ $video_good = "true" && $audio_good = "true" ]] ; then
(Знаки двойного равенства, как вы использовали в предыдущих сравнениях, также сработали бы. Но опять же, пробелы вокруг них требуются.)
Кстати, я настоятельно рекомендую использовать двойные кавычки для ссылок на переменные (т.е. "$f"
вместо просто $f
). Но то, как вы используете $cli_video
и $cli_audio
не работали бы, если бы они были в двойных кавычках, так что не делайте этого с ними. Действительно правильный способ хранения таких параметров - использовать массивы вместо простых переменных, например так:
cli_video=(-c:v copy) ... cli_audio=(-c:a copy) ... ffmpeg -i "$f" "$" "$" "$(basename "$f")"