Você não diz, mas é para não ser executado em áudio DTS? Em qualquer caso, essa linha não funcionará corretamente:
if [[ $video_good="true" && $audio_good="true" ]] ; then
Como não há espaços em torno dos sinais de igualdade, eles são analisados como parte de strings, e não como operadores de comparação. Use isso em vez disso:
if [[ $video_good = "true" && $audio_good = "true" ]] ; then
(Sinais de igualdade dupla, como você usa nas comparações anteriores, também funcionariam. Mas, novamente, espaços ao redor deles são necessários.)
BTW, eu recomendo strongmente citações de variáveis (isto é, "$f"
em vez de apenas $f
). Mas a maneira como você está usando $cli_video
e $cli_audio
não funcionaria se fossem citadas duas vezes, então não faça isso com elas. A maneira realmente correta de armazenar parâmetros como esse é usar arrays em vez de variáveis simples, assim:
cli_video=(-c:v copy)
...
cli_audio=(-c:a copy)
...
ffmpeg -i "$f" "${cli_video[@]}" "${cli_audio[@]}" "$(basename "$f")"