Делаю веб-приложение.
Нужна возможность запуска прямого эфира для каждого из зарегистрированных пользователей.
Я уже успел немного ознакомится как примерно реализовать данную идею, вот что я думаю:
Нужно как-то реализовать на сервере каталог, в который будут загружаться отрезки видео(клиента, что запустил эфир) под определённым индексом, чтобы другая клиентская часть могла получать эти самые фрагменты видео под определённым индексом и тем самым собирался в полноценную видео трансляцию. Почему индексировать? Чтобы среди различных фрагментов видео отделять одну трансляцию от другой.
Подумал реализовать через технологию Apple, как - HLS. Нашёл платформу, которая позволяет сделать прямую трансляцию на сайте, а именно - cloudinary.
Если реализовывать с нуля HLS трансляцию в ключе данной идеи, то какие вещи можете посоветовать, как реализовать? Если я где-то заблуждаюсь, то прошу поправьте.
И нужно ли для этих вещей отдельных сервер или хостинга вполне хватит? Что должен поддерживать данный сервер/хостинг?
UDP:
Рекомендую использовать Web RTC, если вам не нужен архив с завершенными эфирами то можно сэкономить ресурсы сервера. PeerJS облегчит вам задачу. А в статье Видеозвонок в браузере на PeerJS. Быстрый старт на Хабре вы можете увидеть пример использования
xmoonlight, Он не уточнял что за приложение он делает. Если он делает приложение именно для прямых эфиров то возможно, а если он делает приложение для онлайн обучения например, то я не думаю что использование ресурсов YouTube это бред.
xmoonlight, Успокойтесь уже и перестаньте меня преследовать. Повторю, вы ведете себя как обиженный ребенок, за которого не заступились в споре. То что я не принял вашу сторону в споре с модератором не значит что меня нужно преследовать высказывать под моими ответами свое "экспертное"(нет) мнение. Вы лишь доказываете свою глупость.
Нужно как-то реализовать на сервере каталог, в который будут загружаться отрезки видео(клиента, что запустил эфир) под определённым индексом, чтобы другая клиентская часть могла получать эти самые фрагменты видео под определённым индексом и тем самым собирался в полноценную видео трансляцию.
Постараюсь пояснить.
Данная платформа что я делаю, это как индивидуальное приложение, например как instagram, tik-tok и т.д.
Оно по большей части завязано на прямых эфирах.
Я предполагаю что реализовывать прямые эфиры нужно с нуля, не используя сторонние сервисы как youtube API.
loonny, возможно я не правильно объяснил концепцию. Человек запускает прямой эфир, видео что записывается как я понял нарезается и отсылается на сервер. Есть шаблон страницы, на которую должен выводится стрим. Также есть список на сайте, в котором появляется линк на эту трансляцию после запуска(чтобы другой пользователь мог перейти и смотреть). То есть шаблон один. В зависимости от того, какой пользователь запустил стрим, каждому такому потоку должен даваться свой идентификатор. Ибо шаблон один и фильтрация можно сказать идет по линкам, т.е. если пользователь нажал на «линк1», то ему открывается шаблон, куда подгружаются видео с таким же идентификатором(и формируют тем самым видеопоток). Если нажал «линк2», то подгружаются уже видео с другим идентификатором. Надеюсь объяснил.
xmoonlight, О господи... Еще раз повторяю, я не дал итогового ответа, как вы можете оценить то чего нет? То что сейчас написано в ответе не является итоговым ответом, я его буду редактировать. Я написал это, читайте выше.
p.s. Прочтите правила сервиса еще раз, особенно пункт 5.1 и 5.2
MaximAr1es, Видео не обязательно отсылать на сервер, можно создать peer-to-peer эфир например.
видео что записывается как я понял нарезается и отсылается на сервер.
Любой зарегистрированный пользователь должен иметь возможность выйти в прямой эфир и все остальные должны получить уведомление с ссылкой на этот самый эфир. Я правильно вас понял?
loonny, не со всем уведомление.
На сайте есть блок в котором формируется список из запущенных прямых эфиров. Это как главная страница. А так суть верная.
О господи... Еще раз повторяю, я не дал итогового ответа, как вы можете оценить то чего нет? То что сейчас написано в ответе не является итоговым ответом, я его буду редактировать. Я написал это, читайте выше.
зачем флудить тем, что не является ответом для автора вопроса?!
xmoonlight, Имея информацию из вопроса я ответил так, получив больше информации изменил ответ. Если вас что-то не устраивает можете пожаловаться на ответ. Так же не забудьте повторно прочитать правила Хабр Q&A, в особенности пункты 5.1 и 5.2
5.2 правил Хабр Q&A : Экспрессивную лексику. Запрещены любые формы размещения экспрессивных слов и выражений. Это означает, что любые реплики, содержащие экспрессивную лексику ...
Вы ленитесь. Сделали 5% и задали вопрос тут.
Читайте документацию: раздел "требования" и смотрите: что и где интегрируется, а что - нет.
И как это всё собрать воедино.
Там случайно они говорят не про статическое видео? Я конечно полностью не дочитал все, но он говорит что вместо того чтобы это все работало через hls, он отдавал полностью статичные .mp4. По хорошему чтобы отдать .mp4 нужно сначала полностью записать видео, а после чего получить возможность его смотреть. А мне же нужно сделать именно живую трансляцию. Типа как hls. Пишется видос, нарезается, и в момент плеер проигрывает эти куски видео. Чтобы так скажем разрыв между стримером и тем кто стрим смотрит, составлял от силы секунд 10.
День добрый. Почитал документацию на гитхабе сделал по ней - выдало ошибку, сделал по видео, тоже выдало ошибку.
Для практики делал jsfiddle на котором используется https.
Ошибка следующая: Uncaught TypeError: navigator.getUserMedia is not a function на 16 строке
Сам сокет подключается: socket.io connection is opened.
Раз в примерах указывается использовать API таким образом как я сделал, а после чего мне выдаёт ошибку, то я предполагаю проблема вызвана разработчиками что предоставляет мне API.
Максим Калинин, там несколько примеров я не помню конкретный но у меня собралось и заработало. Что то типа группового видеочата. Для справки браузер хром операционка Виндоуз 10