Как аудио и видео в одноранговом соединении webrtc остаются синхронизированными? Я использую API, который публикует аудио и видео (я предполагаю, что это одноранговое соединение) на медиа-сервере. Время от времени звук может рассинхронизироваться до 200 мс. Я связываю это с возможностью того, что аудио и видео являются отдельными потоками, и это объясняет, почему синхронизация может отсутствовать.
Как аудио и видео в одноранговом соединении webrtc остаются синхронизированными?
Ответы (2)
RTP / RTCP (который использует WebRTC) традиционно использует отчет отправителя RTCP. . Это позволяет синхронизировать каждый поток SSRC по метке времени NTP. Браузеры используют их сегодня, так что все должно работать.
Вы выполняете какой-либо мостовой протокол или что-то еще, что может быть только RTP? Какой медиа-сервер вы используете?
В дополнение к ответу Шона:
У WebRTC-плеера в браузерах очень низкая устойчивость к разнице в отметках времени между поступающими аудио и видео сэмплами. Ваши аудио- и видеопотоки должны быть точно выровнены (чередованы), то есть отметка времени последнего аудиосэмпла, полученного из сети, должна быть + - 200 мс или около того по сравнению с отметкой времени последнего видеокадра, полученного из сети. В противном случае проигрыватель WebRTC перестанет использовать метки времени NTP и будет воспроизводить потоки индивидуально. Это связано с тем, что проигрыватель WebRTC пытается минимизировать задержку. Не уверен, что это хорошее решение от команды WebRTC. Если вашей полосы пропускания недостаточно или если кодировщик реального времени предоставляет потоки, не выровненные по временным меткам, тогда у вас будет рассинхронизированное воспроизведение. На мой взгляд, проигрыватель WebRTC может иметь настройку - использовать ли это значение допуска или всегда воспроизводить синхронно, используя временные метки NTP, за счет задержки.