Создание микшера и запись

VyacheslavMik

New Member
Добрый день, используем микширование потоков, чтобы на выходе получить запись видеосвязи с несколькими участниками. на основе доке по rest api:
1) подымаем микшер /mixer/startup
2) добавляем потоки /mixer/add
3) получаем mediaSessionId для микшера используя /stream/find
3) начинаем запись используя mediaSessionId из п.3 /stream/startRecording
можно ли упростить и не делать дополнительный запрос поиск стрима, чтобы получить mediaSessionId обращаясь к библиотеки? запрос на создание микшера мб в flashphoner свойства ложит mediaSessionId, или сделать, чтобы по /mixer/startup в ответе возвращалась mediaSessionId?
(наша реализация есть на https://www.mynewjob.pro/call , если нажать на квадратик, а потом справа в тулбаре кнопка запись)
Спасибо!
 

Max

Administrator
Staff member
Добрый день.
можно ли упростить и не делать дополнительный запрос поиск стрима, чтобы получить mediaSessionId обращаясь к библиотеки? запрос на создание микшера мб в flashphoner свойства ложит mediaSessionId, или сделать, чтобы по /mixer/startup в ответе возвращалась mediaSessionId?
К сожалению, нельзя, поскольку на момент обработки запроса на создание микшера идентификатор медиасессии выходного потока микшера еще неизвестен.
Если Вам необходимо убрать один запрос из цепочки, это можно сделать, включив запись выходных потоков микшера по умолчанию
Code:
record_mixer_streams=true
Если Вы стартуете запись по запросу, и парсинг ответа на запрос /stream/find вызывает затруднения (например, количество потоков на сервере велико), Вы можете использовать запрос
Code:
/rest-api/mixer/find_all
который вернет только информацию обо всех запущенных микшерах и входящих в них потоках
Code:
{
"localMediaSessionId": "ce92b134-2468-4460-8d06-1ea3c5aabace",
"remoteMediaSessionId": null,
"localStreamName": "mixer1",
"remoteStreamName": null,
"uri": "mixer://mixer1",
"status": "PROCESSED_LOCAL",
"mediaSessions": [
"95bf2be8-f459-4f62-9a7f-c588f33e0ad3",
"693781de-cada-4589-abe1-c3ee55c66901"
]
}
Здесь localMediaSessionId - идентификатор медиасессии выходного потока микшера
Также Вы можете давать запрос /stream/find с указанием имени выходного потока микшера
Code:
/rest-api/stream/find
{"name":"mixer1","published":true}
В этом случае ответ будет содержать только данные этого потока, например (код на bash):
Code:
mediaId=`curl -s -H "Content-Type: application/json" -X POST http://localhost:8081/rest-api/stream/find -d '{"name":$mixerStreamName,"published":true}' | jq '.[] | .mediaSessionId'`
postDataJson="{\"mediaSessionId\":$mediaId}"
curl -s -H "Content-Type: application/json" -X POST http://localhost:8081/rest-api/stream/startRecording -d ${postDataJson}
 
Top