LINUX.ORG.RU
решено ФорумAdmin

Передача $args в nginx через rtmp-request

 ,


0

1

Всем доброго времени суток.

Не получается передать дополнительные аргументы в 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 не передаётся в мой скрипт.


Ответ на: комментарий от dhampire

Не видел этой статьи. Хотя в гугле находил несколько страниц с примерами exec_pull и $args. Видимо от балды написали. Спасибо.

Zane
() автор топика
Ответ на: комментарий от anonymous

Да, она прописана у меня в блоке «rtmp» для логирования и пологам вижу, что Nginx её получает, однако, как написали ниже, exec_pull с этой переменной не работает.

Zane
() автор топика
Ответ на: комментарий от anonymous

а $args это из core. И поэтому в лог оно попадает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.