re publishing с query параметрами

LmSys

New Member
После успешной публикации webrtc потока на флешфонер через апи запрашиваю пушить RTMP поток на необходимый мне сервер по такому то урлу с необходимыми мне параметрами
Прим.
rtmp://some.server.com/live/streamname?userId=14&foo=bar&hex=someHex

Успешно получаю rtmp поток на сервере. Можно ли сделать тоже самое только через rtmp_push_auto_start.
Т.е. паблишить на флешфонер /nameX?some=params что бы имя стрима на флешфонере было nameX, а на rtmp_push_auto_start_url передались необходимые аргументы ?some=params
 

Max

Administrator
Staff member
Этот функционал - автоматическая републикация всех потоков - не предназначался для production (добавили уточнение в документации).
"/nameX?some=param" - имя стрима будет nameX, но аргументы при ретрансляции не передадутся.
 

Axel

Member
Было бы очень здорово передавать при ретрансляции и аргументы, так как, в нашем случае, аргументы содержат данные, необходимые для идентификации стримера и его авторизации, которые иначе как в URL не добавишь (для случая с типичным RTMP-паблишером вроде OBS).

Вы пишете, что авторепаблишинг - не для продакшна. Можете подробнее объяснить, почему так? В случае авторепаблишинга сильно упрощается схема (push вместо pull), так как нет необходимости в третьей стороне, которая бы контролировала, что куда репаблишить, через API, ведь достаточно просто добавить пару строк в конфиг сервера.
 

Max

Administrator
Staff member
Эта функция была добавлена для удобства тестирования RTMP push, и сама не отлаживалась. Например, с ней есть проблема с авторепубликацией WebRTC-потоков (WCS-1839).
Добавили тикет WCS-2600, чтобы в будущем рассмотреть отладку для production.
 

Max

Administrator
Staff member
Было бы очень здорово передавать при ретрансляции и аргументы, так как, в нашем случае, аргументы содержат данные, необходимые для идентификации стримера и его авторизации, которые иначе как в URL не добавишь (для случая с типичным RTMP-паблишером вроде OBS).
Это возможно реализовать, если не использовать rtmp_push_auto_start. Если Вы используете REST hook для републикации потока с WCS на другой сервер, то можно пробросить параметры следующим образом:
При публикации на WCS RTMP потока с параметрами в URL, например
Code:
rtmp://demo.flashphoner.com:1935/live/rtmp-test?param1=1&param2=2
эти параметры приходят на бэкенд в REST hook /connect или /publishStream в поле custom, в нашем примере параметры придут в /publishStream
Code:
08:41:06,050 INFO            RestClient - API-ASYNC-pool-12-thread-12 SEND REST OBJECT ==>
URL:http://localhost:8081/apps/EchoApp/publishStream
OBJECT:
{
  "nodeId" : "wSGzis0q1orY1bvoYYYxlvelw10pO65w@192.168.0.64",
  "appKey" : "flashStreamingApp",
  "sessionId" : "/192.168.0.65:33003/192.168.0.64:1935",
  "mediaSessionId" : "ff608338-2732-4992-9503-ed3335cc2482",
  "name" : "rtmp-test",
  ...
  "custom" : {
    "param1" : "1",
    "param2" : "2"
  }
}
Таким образом, Ваш бэкенд может сформировать URL для вызова /rest-api/push/startup, подставив необходимые параметры из поля custom, например
Code:
curl -H "Content-Type: application/json"-X POST http://WCS:8081/rest-api/push/startup -d '{"streamName":"rtmp-test","rtmpUrl":"rtmp://third-party-server:1935/live/rtmp-test?param1=1&param2=2"}'
На WCS для этого должны быть установлены параметры
Code:
rtmp_transponder_full_url=true
rtmp_transponder_stream_name_prefix=
Такая схема, хоть несколько сложнее пары строчек в конфиге, но позволяет использовать push вместо pull и транслировать поток с параметрами из OBS на WCS
 
Last edited:

Max

Administrator
Staff member
Добрый день.
Протестировали автоматическую ретрансляцию потоков на RTMP сервер, в сборке 5.2.1110 добавили возможность указать параметры аутентификации
Code:
rtmp_push_auto_start_url=rtmp://user:password@rtmp.server.com:1935/live
На текущий момент этот функционал может использоваться для ретрансляции RTMP потоков, опубликованных на WCS, для WebRTC не работает, есть тикет WCS-1839.
 
Top