Всем доброго времени суток.
Не получается передать дополнительные аргументы в Nginx через pull-request.
Работаю с CentOS7 и Nginx+rtmp-module.
Схема следующая: я открываю rtmp-ссылку rtmp://192.168.22.209:1934/test_pull/stream?id=qweqweqweqweqwe
в VLC, затем Nginx обрабатывает эту ссылку и по exec_pull запускает скрипт get_stream.sh, передавая в него переменные $app - имя приложения(test_pull), $name - имя потока(stream) и $args - дополнительные аргументы (id=qweqweqweqweqwe). После этого скрипт get_stream.sh запускает поток ffmpeg, передавая ему часть параметров, и видеопоток пушится туда, где мы его запросили. Всё отрабатывает нормально, но только не передаётся переменная $args, хотя в access логах она отображается.
Фрагмент лога Nginx rtmp-access:
192.168.22.162 - 6 [29/Jan/2021:09:41:39 +0300] "test_pull" "stream" "id=qweqweqweqweqwe" "LNX 9,0,124,2" "" "rtmp://192.168.22.209:1934/test_pull" "" PLAY 17335193 #465 29
Конфиг Nginx:
server {
listen *:1934;
buflen 1s;
notify_method get;
application test_pull {
live on;
respawn off;
drop_idle_publisher 30s;
allow publish 127.0.0.1;
allow play all;
exec_pull /usr/scripts/get_stream.sh $args $app $name;
}
}
Код скрипта get_stream.sh:
#!/bin/bash
reqid=$1
src_live=$2
src_stream=$3
echo "$(date '+%H:%M:%S') $1 $2 $3" >> /usr/scripts/test.log
/sbin/ffmpeg -i "rtmp://127.0.0.1:1933/test" -vcodec copy -acodec copy -bsf:a aac_adtstoasc -f flv "rtmp://127.0.0.1:1934/test_pull/$src_stream"
В свой лог скрипт выводит только переменные $app и $name, а $args почему-то до него не доходит, хотя выходит, что Nginx её получает, раз пишет в лог. Пробовал запустить этот же конфиг на другой машине с Ubuntu, думая, что проблема может быть в сборке Nginx`a, но там ситуация точно такая же. Менял порядок переменных, прописывал этот конфиг в nginx.conf вместо include, но ничего не помогает, переменная $args не передаётся в мой скрипт.