Потоковое видео через веб-сокеты с использованием JavaScript

85

Каков самый быстрый способ потоковой передачи видео в реальном времени с помощью JavaScript? Является ли WebSockets через TCP достаточно быстрым протоколом для потоковой передачи видео со скоростью, скажем, 30 кадров в секунду?

Улыбка
источник
1
Герт Джи: Что бы вы порекомендовали? Я бы предпочел, чтобы потребление памяти было относительно низким, поэтому JS (обновление холста HTML5) кажется лучшим вариантом, если он может предложить достаточно хорошую скорость.
SMiLE
1
Упс, забыл упомянуть, что меня интересует прямая трансляция, а не просто потоковое видео, хранящееся в файле. Может ли <video> это предложить?
SMiLE
2
Меня бы не волновала потоковая часть, а скорее то, как вы будете рендерить потоковое видео таким образом. Это вообще возможно?
deceze
4
Для противников скорости это примеры быстрой частоты кадров и видео с использованием HTML 5: The Wilderness Downtown (Chrome, видео) thewildernessdowntown.com и Quake в HTML 5 (Chrome, частота кадров) techcrunch.com/2010/04/01/ google-html5-quake Пара доказательств концепции. Это только улучшится. Кто-то скоро присоединится к победителю и пожнет плоды того, что он был одним из первых игроков на рынке, если кто-то еще этого не сделал. Мог бы я задержать дыхание на IE? Я не знаю '
John K
2
Спасибо за примеры, Джон К.
SMiLE

Ответы:

83

Является ли WebSockets через TCP достаточно быстрым протоколом для потоковой передачи видео со скоростью, скажем, 30 кадров в секунду?

Да .. да, взгляните на этот проект . Веб-сокеты могут легко обрабатывать видеопотоки в формате HD .. Однако вам следует выбрать Adaptive Streaming. Я объясняю здесь, как вы могли бы это реализовать.

В настоящее время мы работаем над веб-приложением для обмена мгновенными сообщениями с чатом, совместным доступом к файлам и поддержкой видео / веб-камеры. С помощью некоторых уловок мы получили потоковую передачу мультимедиа через веб-сокеты (использовали HTML5 Media Capture для получения потока с наших веб-камер).

Вам необходимо создать stream APIи, Media Stream Transceiverчтобы управлять соответствующей обработкой и транспортировкой мультимедиа.

Воутер Доржело
источник
4
Это здорово, спасибо! Думаю, я собираюсь попробовать очень простую реализацию потокового видео, которая совсем не адаптивна, посмотрю на результаты и действую соответственно; знание того, что это возможно, весьма обнадеживает! Ваш учебник также очень полезен.
SMiLE
1
Да .. это хорошая практика начать с простого приложения. Вам придется самостоятельно создать большую часть технологий, необходимых для потоковой передачи в прямом эфире, что, вероятно, не вариант, когда вы: A. просто начинаете, а Б. одни. Удачи.
Wouter Dorgelo
@ Мистер Паллаццо, для чего вы создаете приложение? Бизнесс? Есть ли шанс, что я смогу связаться с вами о том, как вы это делаете?
Алистер
@WouterDorgelo, какова производительность вашего приложения при потоковой передаче HD через веб-сокеты?
кварки
Можем ли мы записать видео CCTVи показать его вживую на веб-странице, используя Javascript?
Shaiju T
1

В СМИ Источник Extensions было предложено , которые позволили бы реализации Adaptive Bitrate Streaming.

Ник Десольерс
источник
Есть ли проект ws2video.js или что-то в этом роде, показывающее, насколько быстро это происходит? В этом сообщении в блоге упоминается, что это вызывает отставание в 5 секунд
Thaddee Tyl
0

Чтобы ответить на вопрос:

Каков самый быстрый способ потоковой передачи видео в реальном времени с помощью JavaScript? Является ли WebSockets через TCP достаточно быстрым протоколом для потоковой передачи видео со скоростью, скажем, 30 кадров в секунду?

Да, Websocket можно использовать для передачи более 30 кадров в секунду и даже 60 кадров в секунду.

Основная проблема с Websocket заключается в том, что он низкоуровневый, и вам приходится иметь дело с другими проблемами, кроме простой передачи фрагментов видео. В общем, это отличный транспорт для видео и аудио.

кварки
источник
Итак, что насчет WebRTC? Он (как и w3c) работает с UDP-соединением, и если у нас есть потеря пакетов, это не будет проблемой. С другой стороны, WebSocket ориентирован на соединение и может беспокоить пользователей из-за задержек, которые могут возникнуть.
М. Ростами
-1

Это определенно возможно, но я еще не уверен, что мы там. А пока я бы рекомендовал использовать что-то вроде Silverlight с IIS Smooth Streaming . Silverlight основан на плагинах, но работает в Windows / OSX / Linux. Когда-нибудь элемент HTML5<video> станет подходящим вариантом, но какое-то время он будет недоставать поддержки.

Джош Стодола
источник
Спасибо за ваш ответ. Я согласен, что Silverlight и Flash, вероятно, являются лучшими вариантами на данный момент. Я думаю, меня интересует потоковая передача Javascript, потому что она открывает больше возможностей для взаимодействия между пользователем и (передающим видео) сервером.
SMiLE
Я должен согласиться с Джошем ... Если вы отчаянно нуждаетесь в потоковой передаче мультимедиа прямо сейчас, не переходите на HTML5.
Wouter Dorgelo
7
На всякий случай, если кто-то все еще читает это: во-первых, Silverlight никогда не поддерживал Linux или мобильные системы. Поддержка Linux silverlight просто никогда не существовала. Во-вторых, как правильно указывают новые ответы, потоковое видео HTML5 / MSE теперь очень хорошо возможно в современных браузерах и должно быть предпочтительнее почти во всех случаях по сравнению с любым подходом на основе плагинов.
ntninja
3
И если кто-то еще это читает, тот день настал. Ради любви к Богу не используйте silverlight
Заннит