Подскажите, пожалуйста, какой настройкой можно задать битрейт для энкодера opus?
Для кодека opus можно задать битрейт двумя способами (последнее время не тестировали).
1. Для opus-кодека на стороне браузера, по направлению браузер > сервер.
Можно задать форматы для кодека opus следующей настройкой flashphoner.properties:
Code:
opus_formats=maxplaybackrate=16000; sprop-maxcapturerate=16000;maxaveragebitrate=20000; stereo=1; useinbandfec=1; usedtx=0
Форматы задаются в соответствии с этой спецификацией:
https://tools.ietf.org/html/draft-ietf-payload-rtp-opus-11
В результате браузер должен получить SDP, в котором выставлено ограаничение битрейта, например maxaveragebitrate=20000.
Мы не тестировали как это работает с последними версиями Chrome. Раньше работало.
2. Для opus-кодека на стороне сервера, по направлению сервер > браузер.
Можно задать битрейт кодирования для кодека opus следующей настройкой flashphoner.properties:
Code:
opus.encoder.bitrate=20000
Эта настройка будет применяться только в том случае, если на стороне сервера работает транскодинг. Например, пришел Speex с Flash Player, а выходит Opus по WebRTC.
Если же вы публикуете поток с Chrome-браузера в кодеке Opus, то аудио будет передаваться без транскодинга и настройка применена не будет.
Также вопрос - можно ли использовать для энкодинга аудиокодек aac и как задать его использование в секции codecs?
Для кодирования по направлению браузер > сервер задать кодек AAC нельзя. Браузеры не поддерживают сжатие в AAC.
По направлению сервер > браузер, кодек задается в зависимости от подключившегося клиента. Например, если клиентом будет браузер с
MSE медиа провайдером, то автоматически включится энкодинг в AAC, т.к. MSE плеер поддерживает только AAC аудио.
Т.е. напрямую использовать AAC энкодинг нельзя.
Единственное, что можно сделать - это запустить RTMP re-publishing существующего потока на rtmp://localhost:1935, в этом случае поток с браузера WebRTC(Opus + VP8 or H.264) будет завернут на localhost по RTMP (AAC + H.264).