Вариант 1. в скрипте получать размеры очередного видео, вычислять правильный размер лого и делать копию PNG нужного размера. Остаётся ffmpeg'ом наложить без масштабирования. Так оно и быстрее, наверное, будет.
Вариант 2. вместо фильтра
scale
использовать похожий фильр
scale2ref – он позволяет брать размеры одного входа, для масштабирования другого.
ffmpeg -i "$file" -i "$wm" \
-filter_complex "[1][0:v]scale2ref=w='min(347, iw * 9/10)':h=ow/main_dar[logo][vid];
[vid][logo]overlay=x=(W-w) / 2:y=H - 2 * h[v]" \
-map [v]:v -map 0:a \
-y "$file-out.mp4"