Видеотранскодинг включается автоматически в одном из следующих 4 случаев:
1. Кодеки стримера и плеера не совпадают по имени.
Например, стример отправляет H.264, плеер пытается играть VP8.
2. Кодеки H.264 отличаются по параметру packetization-mode
Например стример отправляет packetization-mode=1 (default), а плеер явно указывает packetization-mode=0
Ситуация достаточно редкая, т.к. почти все устройства поддерживают packetization-mode=1
3. Разрешение плеера явно указано.
Пример:
Code:
session.createStream({name:"stream1", constraints:{audio:true, video:{width:640,height:480}}}).play();
Если плеер явно указал желаемое разрешение, то включится транскодинг даже в том случае если указанное плеером разрешение совпадает с тем что указал publisher.
Так сделано потому что WebRTC браузер может менять разрешение видео во время публикации и чтобы привести его к указанному во всех случаях, придется транскодировать.
4. Битрейт плеера явно указан.
Code:
session.createStream({name:"stream1", constraints:{audio:true, video:{bitrate:300}}}).play();
В этом случае включится транскодер чтобы кодировать поток в заданный битрейт.
В текущей реализации принудительно отключить транскодинг нельзя. Можно лишь убрать факторы, которые его вызывают.
Подумаем как отключить транскодинг и как корректно дать пользователю информацию об ошибке, о том, что он не сможет проиграть стрим по причине того что требуется транскодинг, а транскодинг отключен. WCS-1346.