Запись нескольких потоков

Ras2607

Member
Здравствуйте!
С записью одного потока разобрались, проблем нет.
Но возникла задача вести трансляцию сразу несколькими ведущими с разных компьютеров.
И все это записать.
Звук-то и картинку мы зрителям вывели от всех ведущих, как разные потоки, в рамках одного подключения по roomAPI.
а как быть с записью?
Если помечаем на запись потоки в параметрах room.publish(), то записываются они отдельно каждый в свой файл.
Есть возможность как-то склеить потоки для записи?
 

Ras2607

Member
На самом деле на запись достаточно наложить только звук от других ведущих. Видео будет передавать только один
 

Max

Administrator
Staff member
Здравствуйте.

Объединять записанные файлы в один можно с помощью ffmpeg.
Пример:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' -map [vid] -c:v libx264 -crf 23 -preset veryfast output.mp4
Проблема в том, что потоки стартуют не синхронно по времени и просто так их нормально не объединить.
В связи с этим мы добавили функцию синхронизации по первому публикующему стриму в комнате.
Например, если User1 начал публиковать поток в 00:00:10, а User2 в 00:00:55, то второй пользователь получит к записи стрима 55-10=45 секунд пустого видео (черный экран + тишина). Таким образом файлы User1.mp4 и User2.mp4 будут одинаковы по времени и их можно будет смикшировать.
Эта функция будет доступна в новой версии сервера 5.1, которая сейчас проходит тестирование. Время ожидания 1-2 недели.

Второй вариант - микширование.
В этом варианте вы можете смикшировать все аудиопотоки комнаты в один.
Эта функция также доступна в версии 5.1.

Попробовать последние сборки из 5.1. можно здесь: https://flashphoner.com/downloads/builds/WCS/5.1
 

Ras2607

Member
О, это просто замечательно. А документация уже есть по этим функциям?
Или опишите здесь как их использовать. Попробуем на версии 5.1

И второй вопрос в одну запись объединить показ рабочего стола через Ваш плагин и трансляцию с камеры от одного ведущего так же пока что нельзя?
 
Last edited:

Max

Administrator
Staff member
Добрый день.
В версии 5.1 реализованы оба варианта
1. Запись отдельных потоков в комнате с возможностью последующего объединения в один с помощью ffmpeg.
документация
2. Микширование потоков в реальном времени с последующей записью.
документация

И второй вопрос в одну запись объединить показ рабочего стола через Ваш плагин и трансляцию с камеры от одного ведущего так же пока что нельзя?
можно с помощью микширования на стороне сервера
 

Ras2607

Member
Начали разбираться с записью в 5.1
Возникло непонимание.
Простая ситуация:

пользователь подключается к комнате
включает трансляцию с записью, через какое-то время выключает - Тут все отлично
потом опять включает трансляцию с записью - в начало файла добавляется черный экран длительностью от начала первой записи.
даже выход всех пользователей из комнаты не помогает обнулить интервал черного экрана

Как этим управлять?
синхронизация записей имеет смысл только когда разные пользователи параллельно ведут трансляцию
 

Max

Administrator
Staff member
потом опять включает трансляцию с записью - в начало файла добавляется черный экран длительностью от начала первой записи.
Попробуем ввести настройку, отключающую это поведение.
синхронизация записей имеет смысл только когда разные пользователи параллельно ведут трансляцию
В текущей реализации нет разницы ведут пользователи трансляцию параллельно или один за другим.
Цель - иметь возможность склеить куски видео в записи чтобы получить запись реального состояния комнаты.
Например, если первый пользователь вещал 30 секунд, потом был перерыв 10 секунд, потом второй пользователь вещал 1 минуту,
то в записи все должно быть ровно также: 30 сек (user1) + 10 сек (перерыв)+1 мин (user2). Поэтому ко всем записям стримов кроме первого будет добавляться черный экран в начало для склейки.

После добавления настройки сможем отключать эту функциональность. Т.е. стримы будут записываться как есть.
Дальше вариантов несколько:
1. Вам самостоятельно склеивать записи в общий стрим.
2. Использовать микшер, который делает это в реальном времени на стороне сервера.
https://docs.flashphoner.com/pages/viewpage.action?pageId=1048855
 

Ras2607

Member
Настройку очень жду, без нее пользоваться комнатами не реально если ведущий один и склейка не требуется.

по поводу микшера отдельный вопрос. сделаю параллельную тему
 

Max

Administrator
Staff member
Настройка доступна в версии 5.1.3407
По умолчанию смещение записи отключено: enable_empty_shift_writer=false

Чтобы включить смещение (добавление черного экрана в начало для последующей склейки записей разных участников), в WCS_HOME/conf/flashphoner.properties нужно добавить
Code:
enable_empty_shift_writer=true
 

Ras2607

Member
В будущем желательно конечно на лету помечать какие потоки нужно синхронизировать, какие нет. Не через конфиг+рестарт.
Пока что и так устроит, благодарю!
 
Top