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

Discussion in 'Web Call Server 5' started by VyacheslavMik, Dec 28, 2019.

  1. VyacheslavMik

    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 , если нажать на квадратик, а потом справа в тулбаре кнопка запись)
    Спасибо!
  2. Max

    Max Administrator Staff Member

    Добрый день.
    К сожалению, нельзя, поскольку на момент обработки запроса на создание микшера идентификатор медиасессии выходного потока микшера еще неизвестен.
    Если Вам необходимо убрать один запрос из цепочки, это можно сделать, включив запись выходных потоков микшера по умолчанию
    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}
    

Share This Page