переключение качества на клиенте

Ritmius

Member
Можно ли реализовать переключение качество звука на клиенте . мы говорим про стрим адио

Если я уже говорю в микшер a1#b
и слушаю b-a1 , можно ли изменить на лету битрейт или только переключение?

как сделать чтобы было 3 качества (низкое, среднее , высокое) у микшера на выходе

или можно чтобы это все адаптивно переключалось?
 
Last edited:

Max

Administrator
Staff member
Адаптивный битрейт и переключение между ними не реализованы.
 

Ritmius

Member
вы ответили на 1 вопрос )

как сделать чтобы было 3 качества (низкое, среднее , высокое) у микшера на выходе?
 

Max

Administrator
Staff member
как сделать чтобы было 3 качества (низкое, среднее , высокое) у микшера на выходе?
Никак, это также относится к поддержке адаптивного битрейта. Есть достаточно сложный путь обеспечить адаптивное качество воспроизведения при помощи HLS ABR, но это работает только в CDN с выделенными Transcoder узлами.
В данный момент мы работаем над внедрением SFU функционала в тикете WCS-2393, но для микшера подобный функционал не планируется, поскольку в этом случае микширование может потребоваться только для записи.
В любом случае, адаптивное качество может быть обеспечено только для потоков с видео, для audio only этот функционал работать не будет. Поэтому возможен только один вариант - выходной поток микшера публиковать с максимальным битрейтом, создавать транскодеры к более низким битрейтам и играть их выходные потоки на клиенте в зависимости от состояния канала.
 
Last edited:

Ritmius

Member
а качество публикации с клиента мы можем регулировать на клиенте?
 

Max

Administrator
Staff member
а качество публикации с клиента мы можем регулировать на клиенте?
Да, можете задавать битрейт и публикацию стерео для аудио, разрешение, битрейт и fps для видео при публикации через констрейнты. Однако, на лету констрейнты менять нельзя, необходимо публиковать заново поток с новыми констрейнтами.
Кроме того, мы создали тикет WCS-3121 для реализации audio only SFU, после завершения работ по video SFU в тикете WCS-2393. После реализации SFU, публикующий клиент отправляет несколько потоков в разных разрешениях, и играющий клиент сможет выбрать один из них для проигрывания. Следует учесть, что это будет реализовано только в браузерах, поддерживающих данную функцию для кодека VP8.
Также мы создали тикет WCS-3122 для добавления возможности транскодировать звук на сервере к указанному битрейту (для кодека Opus).
 

Ritmius

Member
а если микшер в максимальном качестве, а клиент публикует в минимальном.

это будет работать?
 

Max

Administrator
Staff member
а если микшер в максимальном качестве, а клиент публикует в минимальном.

это будет работать?
Да, это будет работать. Но качество именно этого потока в микшере будет, конечно, хуже: битрейт 20 кбит/с, принятый по умолчанию, подходит для передачи речи, но не очень подходит для музыки. Разница на слух при публикации речи с битрейтом 20 кбит/с и 64 кбит/с также заметна.
 

Ritmius

Member
а напишите какие качества задавать с клиента для настройки , низкое . среднее . высокое
 

Max

Administrator
Staff member
а напишите какие качества задавать с клиента для настройки , низкое . среднее . высокое
30 кбит/с - низкое, 64 кбит/с - среднее, 128 кбит/с высокое, например
Code:
session.createStream({
      name: streamName,
      display: localVideo,
      constraints: {
             video: false,
             audio: {
                    bitrate: 30000
             }
      }
}).publish();
 

Ritmius

Member
После реализации SFU, публикующий клиент отправляет несколько потоков в разных разрешениях, и играющий клиент сможет выбрать один из них для проигрывания.

- iOS , android sdk будет работать?


Также мы создали тикет WCS-3122 для добавления возможности транскодировать звук на сервере к указанному битрейту (для кодека Opus).

- Сейчас нельзя транспонировать поток? и можно ли это сделать автоматом на реалтайм микшер?
 

Max

Administrator
Staff member
- iOS , android sdk будет работать?
SFU поддерживается в браузерах и реализовано будет для них. Если сама по себе WebRTC библиотека это поддерживает, можно будет реализовать это и в нативных SDK. Соответствующие тикеты будут созданы по окончании работ по тикетам, упомянутым выше
- Сейчас нельзя транспонировать поток? и можно ли это сделать автоматом на реалтайм микшер?
Сейчас создать аудио транскодер с указанным битрейтом выходного потока нельзя.
Что касается микшера, на него действует настройка opus.encoder.bitrate, единая на весь сервер. Если Вам необходимо поддерживать несколько битрейтов для выходного потока микшера, придется запускать транскодеры, по одному на каждый битрейт, после реализации тикета WCS-3122
 

Max

Administrator
Staff member
а когда примерный срок?
Тикет WCS-3122 сейчас на предварительном тестировании. Мы сообщим о готовности в этой теме.
 

Max

Administrator
Staff member
Добрый день.
По тикету WCS-3122. В сборке 5.2.931 добавлена возможность указать битрейт аудио при создании транскодера:
Code:
POST /rest-api/transcoder2/startup HTTP/1.1
HOST: wcs:8081
content-type: application/json
 
{
    "uri": "transcoder2://tcode2",
    "localStreamName": "testT",
    "remoteStreamName": "test",
    "encoder": {
      "audioBitrate": 64000,
      "audioCodec": "opus"
    }
}
 
Top