Если проблема связана с пустыми аргументами, вызывающими проблемы, рассмотрите возможность создания командной строки с использованием массивов, чтобы можно было отфильтровать пустые переменные:
opts=()
add_opt() {
for i; do [[ -n "$i" ]] && ops+=("$i"); done
}
add_opt "${monitorsom}" "${openal}" "${micro}" "${microal}" "${complexo}"
Затем:
env PULSE_LATENCY_MSEC=5 ffmpeg -vsync passthrough \
-vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi \
"${opts[@]}" \
-thread_queue_size 4096 -framerate 30 \
-f x11grab -s "$(xdpyinfo | grep -oP 'dimensions:\s+\K\S+')" -i :0.0 \
-acodec libfdk_aac -b:a 192k \
-vf 'format=nv12,hwupload' -vcodec h264_vaapi \
-f flv "${nome}"
Если opts
пусто, "${opts[@]}"
превращается в ничто, и мы уже отфильтровали пустые переменные.
(Я бы пошел дальше и поместил все параметры в массив. Когда у меня очень длинные командные строки, я обычно делаю:
opts=(
"opt1"
"opt2"
...
)
cmd "${opts[@]}"
Это облегчает мне отслеживание параметров.)