2013-07-09 20 views
39

W WebRTC zawsze widzę implementację o peer-to-peer i jak uzyskać strumieniowanie wideo od jednego klienta do drugiego. Co z serwerem-klientem?Czy można używać WebRTC do przesyłania strumieniowego wideo z serwera do klienta?

Czy WebRTC może przesyłać strumieniowo pliki wideo z serwera do klienta? (Zastanawiam się nad wykorzystaniem interfejsu WebRTC Native C++ API do utworzenia własnej aplikacji serwera do połączenia z bieżącą implementacją w aplikacji klienckiej przeglądarki Chrome lub Firefox).

OK, jeśli to możliwe, będzie szybszy niż wiele obecnych usługi przesyłania strumieniowego wideo?

+1

Cześć A-letubby czy faktycznie to zrobił? czy możesz mi powiedzieć, jak to zrobić lub udostępnić kod? Dzięki! Philip – Phil

+0

@ a-letubby: Czy jest obsługiwany w przeglądarkach Mac OS, Safari i IE? – user2003356

+0

Hi @Philip, nic nie zrobiłem. Planuję to zrobić, ale wciąż nie mam dużo czasu. –

Odpowiedz

36

Tak, jest to możliwe, ponieważ serwer może być jednym z peerów w tej sesji peer-to-peer. Jeśli przestrzegasz protokołów i wysyłasz wideo w pakietach SRTP za pomocą VP8, przeglądarka go odtworzy. Aby pomóc w budowaniu tych komponentów na innych aplikacjach lub serwerach, możesz sprawdzić stronę this i projekt this jako przewodnik.

Teraz, porównując WebRTC z innymi usługami strumieniowymi ... Będzie to zależało od kilku zmiennych, takich jak kodek lub protokół. Ale na przykład porównanie WebRTC (SRTP przez UDP z kodem VP8) przeciwko Flashowi (RTMP przez TCP z kodem H264), powiedziałbym, że WebRTC wygrywa.

  • Odtwarzacz będzie Flash Player przeciwko natywnej zmiennej <video>.
  • Transport będzie TCP w stosunku do UDP.

Ale oczywiście wszystko zależy od tego, co wysyłasz do klienta.

+0

drugi link w twojej odpowiedzi jest zepsuty. inaczej dzięki! – nelsonic

+0

Dlaczego UDP jest lepszy niż TCP dla wideo? – Alex

+0

To pytanie jest odpowiedziano kilka razy na SO. Zobacz na przykład tę odpowiedź: http://stackoverflow.com/a/6187510/776409 – nakib

6

pisałem niektóre aplikacje i wtyczki przy użyciu natywnego API WebRTC, i nie ma wiele informacji jeszcze tam, ale oto kilka przydatnych zasobów, które pomogą Ci zacząć:

QT Przykład: http://research.edm.uhasselt.be/jori/qtwebrtc
Native przykład przeglądarka: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/

+0

Sprawdź także tę dyskusję w grupie Google: https://groups.google.com/forum/#! msg/discuss-webrtc/Pdas21qohck/CCRZTxPx5esJ – Kamo

3

zacząłem WebRTC Native C++ to Browser Video Streaming Example ale doesnot budować już z rzeczywistą WebRTC Native Code.

Potem wykonane modyfikacje łączące do samodzielnego procesu:

  • zarządzania peerConnection (The peerconnection_server)
  • dostęp do chwytania Video4Linux (The peerconnection_client).

Zdejmowanie strumień z przeglądarki do WebRTC Native C++ klient daje proste rozwiązanie, aby uzyskać dostęp throught przeglądarce WebRTC do urządzenia Video4Linux, który jest dostępny od GitHub webrtc-streamer.

Live Demo

+0

Kompilowanie Webrtc było nieco bardziej złożone niż się spodziewałem, i musiałem zrobić kilka drobnych drobnych aktualizacji twojego źródła (wyglądało to jak zmiany API webrtc), ale ten kod przyniósł wideo po stronie serwera. Dzięki! – mpr

0

Oczywiście. Piszę program za pomocą natywnego interfejsu API WebRTC, który może dołączyć do konferencji jako peer i nagrać zarówno wideo, jak i audio.

zobaczyć: How to stream audio from browser to WebRTC native C++ application

i można z pewnością mediów strumieniowych z natywnej aplikacji.

Jestem pewny, że możesz używać dummy_audio_file do przesyłania strumieniowego audio z lokalnego pliku i możesz znaleźć sposób na dostęp do własnego strumienia wideo.

1

Staramy się zastąpić MJPEGs Webrtc dla naszego oprogramowania serwerowego i mamy prototypowy moduł do tego przy użyciu kilku elementów związanych z projektem Openwebrtc. Był to bezwzględny niedźwiedź i często popełniamy błędy w negocjacjach ICE (nawet w przypadku prostej sieci LAN), ale w większości działa.

Zbudowaliśmy także prototyp z modułem Google Webrtc, ale miał on wiele zależności. Łatwiej mi jest pracować z modułami Openwebrtc, ponieważ rzeczy Google są tak ściśle powiązane z ogólnymi scenariuszami peer-to-peer w przeglądarce.

Skompilowałem następujących od podstaw:

libnice 0.1.14 gstreamer-sctp-1.0 usrsctp

Wtedy muszę wchodzić w interakcje z libnice trochę bezpośrednio zebrać kandydatów. Należy również ręcznie wypisać pliki SDP. Ale ilość kontroli - możliwość kontrolowania źródła rurociągu - sprawia, że ​​warto. Powstały rurociąg (z dwoma klientami poza jednym źródle Server) jest poniżej:

resulting webrtc pipeline

Powiązane problemy