Микширование видеопотока и аудио

gekz

New Member
Доброго времени суток
не хотелось дублировать темы, по сути вопрос тоже связан с микшером, в общем сейчас тестируем эксплуатацию медиа сервера на триал лицензии ( до этого использовали чистый webrtc peer-to-peer), но возникла задача, которую без сервера не решить, а именно:

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

Сейчас тестируем базовый функционал (микшер реального времени с MCU ) при 7 участниках, в дальнейшем может быть и более.

Проблема №1: при просмотре “своего” микшер потока (где отображается видео всех в тч себя + аудио всех, кроме себя) есть приличные задержки именно в отображении себя, другие может тоже идут с задержкой, но мне они приходят синхронизировано и это не заметно. А вот когда смотришь на себя там приличная задержка, соответственно вопрос:

Можно ли при определенной реализации получить микшер где есть все, кроме меня, а себя выводить где-то отдельно от микшера локально, но при этом чтоб всем мой поток с аудио и видео уходил?

Проблема №2: у некоторых картинка сыпется в плане качества … возможно слабый интернет и тд, можно ли, и вообще, есть ли какие советы по MCU и/или по MCU в реальном времени по настройки сервера/кодеков/битрейтов для минимизации потерь качества и работы минимально без задержек. Так как при peer to peer таких проблем не было, но были проблемы с большой нагрузкой на компьютеры участников конференции. И вообще может есть какие советы.

Еще я так понял микшер создается в h264 всегда и при ретрансляции на ютуб тоже ? и соотвественно нет смысла передавать vp8 для минимизации конвертаций? Или я не прав ?


Буду благодарен за любые референсы на документацию, может темы на форуме( хотя смотрел )/примеры и другие статьи.

Интересует именно WEB SDK
 
Last edited:

Max

Administrator
Staff member
Добрый день
не хотелось дублировать темы,
Это неправильный подход. Форум используется, в том числе, как публичный баг-трекер, поэтому вопросы, которые не относятся к проблемам, упомянутым в теме, следует задавать отдельно.
Проблема №1: при просмотре “своего” микшер потока (где отображается видео всех в тч себя + аудио всех, кроме себя) есть приличные задержки именно в отображении себя, другие может тоже идут с задержкой, но мне они приходят синхронизировано и это не заметно.
Задача микшера в конференции как раз в том и состоит, чтобы доставить один поток всем участникам. Т.е. Вы видите себя таким, каким Вас видят остальные участники конференции. Микшер буферизирует потоки участников, чтобы синхронизировать их. Вы можете включить отображение буферизации для потоков
Code:
mixer_display_stream_name=true 
mixer_debug_mode=true
Большие значения буферизации на Вашем потоке указывают на возможные проблемы с пропускной способностью канала. Попробуйте установить меньшее разрешение выходного потока микшера, например
Code:
mixer_video_width=640
mixer_video_height=360
Можно ли при определенной реализации получить микшер где есть все, кроме меня, а себя выводить где-то отдельно от микшера локально, но при этом чтоб всем мой поток с аудио и видео уходил?
Нет, этого сделать нельзя.
Проблема №2: у некоторых картинка сыпется в плане качества … возможно слабый интернет и тд, можно ли, и вообще, есть ли какие советы по MCU и/или по MCU в реальном времени по настройки сервера/кодеков/битрейтов для минимизации потерь качества и работы минимально без задержек. Так как при peer to peer таких проблем не было, но были проблемы с большой нагрузкой на компьютеры участников конференции. И вообще может есть какие советы.
При проблемах с пропускной способностью каналов участников необходимо:
- снижать максимальный битрейт на стороне клиента, указывается в кбит/с
Code:
constraints.video.maxBitrate=600
- либо ограничивать максимальный битрейт на стороне сервера (это будет действовать на все публикуемые потоки), указывается в бит/с
Code:
webrtc_cc_max_bitrate=600000
Подробнее об управлении битрейтом можно прочитать здесь. Обратите внимание, что не рекомендуется ограничивать минимальный битрейт во избежание фризов потока участника в микшере.
Рекомендуется также снижать разрешение публикации при плохом канале участника
Code:
constraints.video = {
    width: 320,
    height: 240
};
Методика оценки качества канала публикации и воспроизведения, на базе которой можно реализовать индикатор для клиента, приведена здесь.
Еще я так понял микшер создается в h264 всегда и при ретрансляции на ютуб тоже ? и соотвественно нет смысла передавать vp8 для минимизации конвертаций? Или я не прав ?
Да, выходной поток микшера кодируется в H264 + Opus, для записи звук перекодируется в AAC.
Рекомендованный Youtube и поддерживаемый нами способ ретрансляции предполагает использование RTMP, поэтому здесь также используется H264 + AAC.
VP8 имеет смысл использовать для публикации/воспроизведения, если браузер не поддерживает H264 без установки сторонних библиотек, но число конвертаций это не уменьшит.
Буду благодарен за любые референсы на документацию, может темы на форуме( хотя смотрел )/примеры и другие статьи.
Вот, например, статья по практической реализации MCU микшера
 

gekz

New Member
Обратите внимание, что не рекомендуется ограничивать минимальный битрейт во избежание фризов потока участника в микшере.
Похоже именно это сыграло огромную роль, так как до этого под каждое из доступных у нас разрешений камеры указывал минимум и максимум, после того как минимум убрал ситуация стала существенно в лучшую сторону. Спасибо, насчет тем и остального - учту
 
Top