После многих неудачных попыток я наконец смог построить то, что пытался:
Потоковое видео в реальном времени через socket.io.
Итак, что я делал, было:
- Start getUserMedia , чтобы запустить веб-камеру
- Запустить mediaRecorder установить интервалы записи 100 мс
- на каждом доступном фрагменте передать событие через socket.io на сервер с большим двоичным объектом, преобразованным в строку base64
- Сервер отправляет обратно преобразованный base64 фрагмент видео длиной 100 мс обратно во все подключенные сокеты.
- Веб-страница получает фрагмент и использует mediaSource и sourceBuffer для добавления фрагмента в буфер
- Прикрепите источник мультимедиа к видеоэлементу и VOILA :) видео будет воспроизводиться ПЛАВНО. Пока вы прикрепляете каждый фрагмент по порядку и не пропускаете фрагменты (в этом случае воспроизведение прекращается)
И ЭТО РАБОТАЕТ! НО было невозможно использовать ..: (
Проблема в том, что процесс mediaRecorder интенсивно использует ЦП, а загрузка ЦП страницы подскакивает до 15%, и весь процесс был СЛИШКОМ МЕДЛЕННЫМ.
Было 2,5 секунды задержка для видеопотока, проходящего через socket.io, и практически такая же, ДАЖЕ если НЕ отправлять капли через socket.io, а отображать их на той же странице.
Ооочень я обнаружил, что это работает, но НЕ работают для надежного сервиса видеочата. Он просто не предназначен для этого. Для записи видео с веб-камеры для последующего воспроизведения mediaRecorder может работать, но не для потоковой передачи в реальном времени.
Я думаю, для потоковой передачи в реальном времени нет никакого способа обойтись без WebRT C, вы ДОЛЖНЫ использовать WebRT C для отправки видеопотока на одноранговый узел или на сервер для отправки другим узлам. НЕ ПЫТАЙТЕСЬ создать службу видеочата в реальном времени с помощью mediaRecorder . Вы только потрачу впустую ваше время. Я сделал это для вас :) так что вам не обязательно. Просто загляните в webRT C. Возможно, вам придется использовать сервер TURN. Twilio предоставляет серверы STUN и TURN, но это стоит денег. НО вы можете запустить свой собственный сервер TURN с Coturn и другими службами, но я еще не рассмотрел это.
Спасибо. Надеюсь, это кому-то поможет.