Мое приложение Javascript получает видеопоток WebM через соединение Websocket. Между отправкой видеокадров удаленным узлом и их получением приложением нет задержки.
Я создаю в приложении объект MediaSource
, к которому добавляю кадры видео, и позволяю элементу видео показывать его:
video.src = window.URL.createObjectURL(mediaSource);
Это работает хорошо, но есть некоторая (менее секунды) задержка, которая, возможно, делает это решение не оптимальным для видеозвонков.
Очевидно, некоторые приложения WebRTC вместо этого используют MediaStream
:
video.srcObject = mediaStream;
... и они не показывают задержки.
Я не мог определить из документации, обрабатывают ли браузеры src
и srcObject
по-разному.
Еще одна вещь, которую я не смог найти, это то, можно ли создать MediaStream
и добавить к нему буферы, как с MediaSource
. Я хочу попробовать это, просто чтобы проверить, не вызовет ли srcObject
вышеупомянутую задержку в моем приложении.
Если я использую:
video.srcObject = mediaSource;
Я получаю сообщение об ошибке:
TypeError: не удалось установить свойство «srcObject» в «HTMLMediaElement»: предоставленное значение не имеет типа «MediaStream».
MediaSource
свойствуsrc
теперь определяется WHATWG; Для тех, кто любит публиковать приложения только для Chrome (позор! позор! позор!), команда Google/Chromium экспериментирует с некоторым API для создания пользовательских медиатреков, но я не могу найти ссылку в истории браузера, хотя я на 100% уверен, что читал ее неделю назад. 11.05.2021