MediaRecorder по какой причине может возникать рассинхронизация Audio и Video?
Всем привет. Проблема следующая.
В приложении существует рекордер для видео:
- Запись осуществляется через MediaRecorder, чанки по 1 секунде отправляются через вебсокеты на бэк, там склеиваются в 1 файл.
- 3 режима:
1) запись вебкамеры (getUserMedia с нужными атрибутами и передача stream-а в MediaRecorder), ничего необычного
2) запись экрана (getDisplayMedia и передача stream-а в MediaRecorder)
3) screen + webcam: получаем 2 стрима Webcam и Screen и транслируем их в canvas, stream canvas-а иде т в MediaRecorder.
Проблема:
Для некоторых пользователей аудио записывается c неким сдвигом, и получается что картинка видео и аудио дорожка рассинхронизированы. Сам воспроизвести не могу (на маке с M1), есть подобные случаи как на винде так и на топовых маках. Кто нибудь сталкивался? В чем может быть причина?
Пример из DirectShow. Видно, что audiorenderer следит за синхронизацией (если videorenderer не успевает отрисовывать, то звук продолжает идти с нормальной скоростью). Сами же отметки времени присутствуют в исходном потоке. Пока подозрение, что сдвиг произошёл в момент записи.
В целом похоже на то. Дальнейшие исследования показали что вероятно тормозила отрисовка канваса со смешанными стримами. Немного оптимизировали, кейс конкретного пользователя пофиксили. Но проблема вероятно еще актуальна.
Есть у кого то опыт смешивания видео стримов в реальном времени? Есть ли более легкая альтернатива канвасу?