Настройки аудиокодека opus

Chaggy

New Member
Добрый день. В документации нашел настройку битрейта для для кодека opus, то она выглядит не так как все остальные серверные настройки - opus.encoder.bitrate. Тем не менее добавили эту настройку в flashphoner.properties, но она по всей видимости не работает. Подскажите, пожалуйста, какой настройкой можно задать битрейт для энкодера opus?
Также вопрос - можно ли использовать для энкодинга аудиокодек aac и как задать его использование в секции codecs?
 

Max

Administrator
Staff member
Подскажите, пожалуйста, какой настройкой можно задать битрейт для энкодера 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).
 

Chaggy

New Member
а если публикация идет с ffmpeg, чтобы применялась настройка аудиокодека, как я понимаю, нужно, чтобы ffmpeg гнал поток с кодеком отличным от opus (например, AAC)?
у нас проблема заключается в том, что гоним с помощью ffmpeg музыкальное видео на медиасервер, и при просмотре потока в браузере - ужасное качество звука. какая бы настройка сервера нам бы помогла?
 

Max

Administrator
Staff member
ffmpeg должен стримить RTMP в кодеках H.264 и AAC, т.е. с таким стримом должно все воспроизводиться нормально, без проблем со звуком.
Покажите пожалуйста команду и ключи, с которыми запускается ffmpeg.
чтобы ffmpeg гнал поток с кодеком отличным от opus
Если ffmpeg стримит через RTMP (а по другому WCS сервер не принимает), то Opus в принципе нельзя использовать, т.к. RTMP пакетизация не поддерживает кодек Opus и при его трансляции ffmpeg-ом может произойти все что угодно.
 

Chaggy

New Member
'ffmpeg loglevel debug -re -i - -preset ultrafast -vcodec libx264 -acodec copy -threads 1 -f flv -rtmp_conn O:1 NS:appKey:flashStreamingApp NO:custom:O:1 NS:auth:' + self.auth + ' NS:stream:' + self.stream_id + ' O:0 O:0', self.destination + '/flashStreamingApp/' + self.stream_id
 

Chaggy

New Member
пробовали. результат тот же - такое ощущение, что настройка энкодера не применяется
 

Max

Administrator
Staff member
То есть, ffmpeg опция -acodec не работает? В каком формате видео; можно ли сконвертировать в mp4 с aac?
 

Chaggy

New Member
нет. в ffmpeg все в порядке и опции работают - при публикации потока из ffmpeg на другой медиасервер (AMS) со звуком нет проблем.
при публикации этого же потока на WCS - звук сильно деградирует в качестве. В качестве источника видео используем ролик на youtube.
 

Max

Administrator
Staff member
Проверили с версией сервера 2573, Chrome 62 и этим видео (в качестве источника для ffmpeg использовался .webm файл, скачанный youtube-dl) - качество аудио при воспроизведении нормальное. Уточните, пожалуйста, какой браузер и медиа провайдер используете для просмотра, и приведите пример ролика (можно выслать на logs@flashphoner.com).
 
Top