Возможно ли реализовать мультибитрейтность WebRTC?

Kirill

Member
Были ли у вас кейсы реализации мультибитрейтности WebRTC?
Или возможно вы сможете дать линки на известные вам кейсы ....
 

Max

Administrator
Staff member
Настоящая мультибитрейтность достигается использованием кодека VP9.
С ним пока плотно не работали. В основном работаем с кодеками H.264 и VP8, т.к. они более переносимы между платформами.
На текущих кодеках мультибиртейт можно реализовать на стороне сервера путем транскодинга.
При попытке воспроизведения потока с указанием битрейта, для этого потока должен создаться транскодер.
Пример:
1. Публикуем stream1 640x480
Code:
session.createStream({name:stream1, constraints:{audio:true, video:{width:320,height:240}}}).publish();
2. Играем stream1
Code:
session.createStream({name:stream1}).play();
3. Играем stream1 с пониженным битрейтом 500 kbps
Code:
session.createStream({name:stream1, bitrate:500}).play();
или с пониженным разрешением и как следствие битрейтом:
Code:
session.createStream({name:stream1, constraints:{audio:true, video:{width:320,height:240}}}).play();
Недостаток этого способа в том что транскодинг берет много серверных ресурсов.
Сейчас доделываем транскодирование на GPU Nvidia чтобы снизить нагрузку на процессор.
 

Kirill

Member
Добрый день. Спасибо большое за ответ.
Мы сами отдельно подготавливаем стримы (т.е. транскодинг на стороне flashphoner - не требуется ), вопрос в том, как сделать бесшовное переключение на клиенте в момент просадки скорости ?
 

Max

Administrator
Staff member
Бесшовно в текущей реализации не получится. Только останавливать текущий и подключаться ко второму.
Переключение займет несколько секунд.
 
Top