Przesyłanie strumieniowe wideo przez gniazda sieciowe przy użyciu JavaScript

85

Jaki jest najszybszy sposób przesyłania strumieniowego wideo na żywo za pomocą JavaScript? Czy protokół WebSockets przez TCP jest wystarczająco szybki, aby przesyłać strumieniowo wideo z, powiedzmy, 30 kl./s?

Uśmiech
źródło
1
Gert G: Co byś polecił? Wolałbym, aby zużycie pamięci było stosunkowo niskie, dlatego JS (aktualizacja płótna HTML5) wydaje się lepszą opcją, jeśli może oferować wystarczająco dobrą prędkość.
SMiLE
1
Ups, zapomniałem wspomnieć, że interesuje mnie transmisja strumieniowa na żywo, a nie tylko przesyłanie strumieniowe niektórych filmów przechowywanych w pliku. Czy <video> może to zaoferować?
SMiLE
2
Nie przejmowałbym się tak bardzo częścią strumieniową , ale raczej sposobem renderowania wideo przesyłanego strumieniowo w taki sposób. Czy to w ogóle jest możliwe?
deceze
4
Dla tych, którzy nie lubią szybkości, są to przykłady szybkich szybkości klatek i wideo przy użyciu HTML 5: The Wilderness Downtown (Chrome, wideo) thewildernessdowntown.com i Quake in HTML 5 (Chrome, liczba klatek) techcrunch.com/2010/04/01/ google-html5-quake Kilka dowodów słuszności koncepcji. To się tylko poprawi. Ktoś wkrótce wskoczy na modę i odniesie korzyści z bycia wczesnym graczem na rynku, jeśli ktoś jeszcze tego nie zrobił. Czy wstrzymałbym oddech dla IE? I nie wiem '
John K
2
Dzięki za przykłady, John K.
SMiLE,

Odpowiedzi:

83

Czy protokół WebSockets przez TCP jest wystarczająco szybki, aby przesyłać strumieniowo wideo z, powiedzmy, 30 kl./s?

Tak… jest, spójrz na ten projekt . Websockets z łatwością obsługuje strumieniowanie wideo HD. Jednak powinieneś wybrać Adaptive Streaming. Tutaj wyjaśniam , jak możesz to wdrożyć.

Obecnie pracujemy nad komunikatorem internetowym z obsługą czatu, udostępniania plików i wideo / kamery internetowej. Z kilkoma drobiazgami i sztuczkami otrzymaliśmy strumieniowe przesyłanie multimediów przez websockets (użyliśmy HTML5 Media Capture, aby uzyskać strumień z naszych kamer internetowych).

Musisz zbudować a stream APIi a, Media Stream Transceiveraby kontrolować powiązane przetwarzanie i transport mediów.

Wouter Dorgelo
źródło
4
To świetnie, dzięki! Myślę, że spróbuję bardzo podstawowej implementacji strumieniowego przesyłania wideo, która wcale nie jest adaptacyjna, przyjrzę się wynikom i postępuję zgodnie z nimi; świadomość, że jest to możliwe, jest jednak bardzo zachęcająca! Twój samouczek jest również bardzo pomocny.
SMiLE
1
Tak… dobrą praktyką jest rozpoczęcie od prostej aplikacji. Większość technologii potrzebnych do transmisji na żywo będziesz musiał samodzielnie zbudować, co prawdopodobnie nie jest opcją, gdy: A. dopiero zaczynasz i B. jesteś sam. Powodzenia.
Wouter Dorgelo
@ Panie Pallazzo, do czego tworzysz aplikację? Biznes? Jest jakaś szansa, że ​​mógłbym się z tobą skontaktować, jak to robisz?
Alistair
@WouterDorgelo, jaka jest wydajność Twojej aplikacji podczas przesyłania strumieniowego HD przez gniazda sieciowe?
kwarki
Czy możemy nagrywać wideo CCTVi wyświetlać je na żywo na stronie internetowej za pomocą Javascript?
Shaiju T
1

W Media Source Extensions został zaproponowany, które pozwoliłyby na implementacje Adaptacyjne Bitrate Streaming.

Nick Desaulniers
źródło
Czy istnieje projekt ws2video.js lub coś podobnego, który pokazuje, jak szybko to działa? Ten post na blogu wspomina, że ​​powoduje 5s opóźnienia: phoboslab.org/log/2013/09/…
Tyl
0

Aby odpowiedzieć na pytanie:

Jaki jest najszybszy sposób przesyłania strumieniowego wideo na żywo za pomocą JavaScript? Czy protokół WebSockets przez TCP jest wystarczająco szybki, aby przesyłać strumieniowo wideo z, powiedzmy, 30 kl./s?

Tak, Websocket może być używany do transmisji powyżej 30 fps, a nawet 60 fps.

Głównym problemem związanym z Websocket jest to, że jest on niskopoziomowy i musisz radzić sobie z innymi problemami niż tylko przesyłanie fragmentów wideo. Podsumowując, jest to świetny transport dla wideo i audio.

kwarki
źródło
A co z WebRTC? Działa (tak jak w3c) na połączeniu UDP i jeśli mamy jakąś utratę pakietów, nie byłoby problemu. Z drugiej strony, WebSocket jest zorientowany na połączenie i może przeszkadzać użytkownikom ze względu na opóźnienie, które mogłoby wystąpić.
M. Rostami
-1

Jest to na pewno możliwe, ale nie jestem pewien, czy jeszcze tam jesteśmy. W międzyczasie polecam używanie czegoś takiego jak Silverlight z płynnym przesyłaniem strumieniowym usług IIS . Silverlight jest oparty na wtyczkach, ale działa w systemach Windows / OSX / Linux. Któregoś dnia element HTML5<video> będzie drogą do zrobienia, ale przez chwilę będzie brakowało wsparcia.

Josh Stodola
źródło
Dzięki za twoją odpowiedź. Zgadzam się, że Silverlight i Flash są prawdopodobnie lepszymi opcjami w tym momencie. Wydaje mi się, że interesuje mnie streaming w Javascript, ponieważ otwiera on więcej możliwości interakcji między użytkownikiem a serwerem (transmitującym wideo).
SMiLE
Muszę się zgodzić z Joshem .. Jeśli teraz rozpaczliwie potrzebujesz strumieniowego przesyłania multimediów, nie idź na HTML5.
Wouter Dorgelo
7
Na wszelki wypadek, gdyby ktoś jeszcze to czytał: First of Silverlight nigdy nie obsługiwał Linuksa ani systemów mobilnych. Obsługa Silverlight w Linuksie po prostu nigdy nie istniała. Po drugie, jak prawidłowo wskazują nowsze odpowiedzi, strumieniowanie wideo HTML5 / MSE jest teraz bardzo dobrze możliwe w nowoczesnych przeglądarkach i powinno być preferowane w prawie wszystkich przypadkach w stosunku do wszelkiego rodzaju podejścia opartego na wtyczkach.
ntninja
3
A jeśli ktoś jeszcze to czyta, ten dzień nadszedł. Na miłość boską nie używaj
srebrnego światła