@LemanRass21

Как начать воспроизведение потокового видео не с его начала?

Идея такая:
Я захватываю видео и аудио с помощью navigator.getUserMedia.
Начинаю запись с помощью MediaRecorder где с некой периодичностью получаю chunk данных в формате Uint8Array который я отправляю на сервер.

Другие клиенты подключаются к серверу и начинают получать эти chunk’и и воспроизводить у себя приблизительно следующим кодом:
connection.on(“chunk”, chunk => {
Chunks.push(chunk);
Video.src = window.URL.createObjectURL(new Blob(Chunks, mimeType));
Video.play();
}

И таким образом они начинают в режиме реального времени видеть то что снимает на камеру «стример».
Но тут есть 2 существенных проблемы которые по сути исходят из одной причины.
1. При получении каждого нового chunk’a с сервера воспроизведение начинается сначала что собственно логично ибо код так и написан. Дело в том, что я не могу динамически добавлять chunk в конец текущего видео что бы воспроизведение не обновлять. Если вы хотите тут посоветовать MediaSource то не поленитесь пожалуйста привести собственный рабочий пример его использования с Uint8Array chunk’ами например на JSfiddle ибо я с этим классом уже настолько себе мозг изнасиловал...он у меня так и не заработал. По этому те примеры которые вы найдёте в гугле я наверняка уже видел и пробовал.
2. Нужно уметь стартовать стрим из любого chunk’a. Например стрим идет уже 2 часа и на сервере уже имеется 100500 chunk’ов. При подключении нового зрителя ему нужно отдавать только все новые chunk’и а не заставлять качать все предыдущие. В моей текущей ситуации качать нужно все и все работает до того момента покуда целостность потока не нарушена. Если я уберу один любой chunk из массива - после конвертации этого самого массива в Blob - видео больше не запустится в HTML элементе под названием video.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект