Запись микшированного потока без подписчика.

Ilya K.

Member
Здравствуйте.
Скажите, пожалуйста, для записи микшированного потока обязательно нужно кому-то на этот поток подписаться?
Если нет, нужно для этого что-то делать дополнительно?
Создаём через REST API, класс указывается com.flashphoner.media.mixer.video.presentation.CenterNoPaddingGridLayout.

Постараюсь более детально описать.
1. используем CDN. Публикуем на origin, воспроизводим с edge
2. Даже с одним спикером должен создаваться и записываться микшированный поток (от этого сейчас сложно уйти)
3. При публикации потока на origin у спикера автоматически создаётся подписка на микшированный поток, т.к. без подписки не получается записать микшированный поток.
Можно каким-то образом обойтись без п.3?
 
Last edited:

Max

Administrator
Staff member
Добрый день, подскажите пожалуйста, с какого из серверов (Origin или Edge), производится запись микшированного потока?

Поскольку потоки не раздаются принудительно, а Edge сервер забирает определенный поток с Origin только по запросу пользователя из браузера или мобильного приложения, то без подписчика публикуемый стрим не существует на Edge сервере (так же, pull агент удаляется по истечению таймаута проверки активности), а следовательно не может быть записан.

При записи микшированного потока на Origin (где он будет являтся локальным), подписчики не нужны, достаточно создать Микшер, добавить в него необходимые потоки и, например, при помощи REST запроса начать запись.
 

Max

Administrator
Staff member
Правильно понимаю, что актуальная документация здесь?
Да. Если запись микшированных потоков идет на Origin сервере, можно стартовать запись не по REST API, а настройкой
Code:
record_mixer_streams=true
Если запись не стартует в этом случае, просим предоставить доступ к серверу, где это воспроизводится, используя эту форму
 

Max

Administrator
Staff member
Мы проверили Ваш сервер. Если публиковать поток в микшер (например, fptest#fpmixertest), на подключая зрителей к микшеру, то запись успешно создается, и после остановки микшера по таймауту отрабатывает скрипт on_record_hook.sh, в котором запись копируется в AWS S3 хранилище, после чего удаляется без каких-либо проверок. Если проверить результат выполнения команды aws s3 cp, она возвращает 0 (что, по-видимому, означает, что копирование прошло успешно. Если закомментировать удаление записи с сервера, то она остается в каталоге /usr/local/FlashphonerWebCallServer/records, ее можно скопировать и проигратьЮ например, в VLC.
При создании MCU микшера в примере MCU client поведение полностью аналогично.
Таким образом, проблема на Вашем сервере не воспроизводится, либо заключается не в самой записи потока, а в постобработке. Два примера записей оставлены в каталоге. /usr/local/FlashphonerWebCallServer/records.
К сожалению, мы не смогли проверить создание микшера по REST API, поскольку включена авторизация, но на наших тестовых серверах проблема не воспроизводится и при создании REST API.
Рекомендуем в скрипте on_record_hook.sh:
1. Убрать команду cp $SRC_FILE $DST_FILE перед командой aws s3 cp, поскольку параметр DST_FILE сформирован, как S3 URL, и локальная команда копирования в любом случае будет выдавать ошибку
2. Проверять результат, возвращаемый командой aws s3 cp
3. Записывать действия, выполненные в скрипте, в лог-файл, например в /usr/local/FlashphonerWebCallServer/logs/records.log
 
Top