web-dev-qa-db-fra.com

Est-il possible d'utiliser WebRTC pour diffuser des vidéos du serveur vers le client?

Dans WebRTC, je vois toujours l'implémentation sur peer-to-peer et comment obtenir le streaming vidéo d'un client à un autre client. Qu'en est-il du serveur au client?

Est-il possible pour WebRTC de diffuser des fichiers vidéo du serveur vers le client? (Je pense à utiliser WebRTC Native C++ API pour créer ma propre application serveur pour se connecter à l'implémentation actuelle sur chrome ou application cliente du navigateur Firefox).)

OK, si c'est possible, sera-t-il plus rapide que de nombreux services de streaming vidéo actuels?

49
A-letubby

Oui, c'est possible car le serveur peut être l'un des homologues de cette session d'égal à égal. Si vous respectez les protocoles et envoyez la vidéo en paquets SRTP à l'aide de VP8, le navigateur la lira. Pour vous aider à créer ces composants sur d'autres applications ou serveurs, vous pouvez consulter la page this et this comme guide.

Maintenant, en comparant WebRTC avec d'autres services de streaming ... Cela dépendra de plusieurs variables comme le codec ou le protocole. Mais, par exemple, en comparant WebRTC (SRTP sur UDP avec le codec VP8) et Flash (RTMP sur TCP avec le codec H264), je dirais que WebRTC gagne.

  • Le joueur sera Flash Player contre le natif <video> tag.
  • Le transport serait TCP contre UDP.

Mais bien sûr, tout dépend de ce que vous envoyez au client.

41
nakib

J'ai écrit des applications et des plugins à l'aide de l'API WebRTC native, et il n'y a pas encore beaucoup d'informations, mais voici quelques ressources utiles pour vous aider à démarrer:

Exemple QT: http://research.edm.uhasselt.be/jori/qtwebrtc
Exemple natif du navigateur: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/

8
Kamo

J'ai commencé avec le WebRTC Native C++ to Browser Video Streaming Example mais il ne se construit plus avec le code natif WebRTC réel .

Ensuite, j'ai apporté des modifications fusionnant en un processus autonome:

  • gestion de peerConnection (le peerconnection_server)
  • accès à la capture Video4Linux (le peerconnection_client).

La suppression du flux du navigateur vers le client WebRTC Native C++ donne une solution simple pour accéder via un navigateur WebRTC à un périphérique Video4Linux qui est disponible à partir de GitHub webrtc-streamer .

Démo en direct

3
mpromonet

Nous essayons de remplacer les MJPEG par Webrtc pour notre logiciel serveur et avons un module prototype pour ce faire en utilisant une poignée de composants liés au projet Openwebrtc. Cela a été un ours absolu à faire, et nous avons fréquemment des erreurs de négociation ICE (même sur un simple LAN), mais cela fonctionne surtout.

Nous avons également construit un prototype avec le module Google Webrtc, mais il avait de nombreuses dépendances. Je trouve plus facile de travailler avec les modules Openwebrtc parce que les trucs de Google sont si étroitement liés aux scénarios généraux de pair à pair sur le navigateur.

J'ai compilé ce qui suit à partir de zéro:

libnice 0.1.14 gstreamer-sctp-1.0 usrsctp

Ensuite, je dois interagir un peu directement avec libnice pour rassembler les candidats. Vous devez également écrire les fichiers SDP à la main. Mais la quantité de contrôle - pouvoir contrôler la source du pipeline - en vaut la peine. Le pipeline résultant (avec deux clients hors d'une source de serveur) est ci-dessous:

resulting webrtc pipeline

1
mpr

Oui, ça l'est. Nous avons développé un outil de test de charge pour publier et jouer pour Ant Media Server. Cet outil peut diffuser un fichier multimédia. Nous avons utilisé la même bibliothèque WebRTC native utilisée dans Ant Media Server .

0
mgct

Bien sûr. J'écris un programme à l'aide de l'API WebRTC native qui peut rejoindre la conférence en tant que pair et enregistrer à la fois de la vidéo et de l'audio.

voir: Comment diffuser de l'audio depuis un navigateur vers une application C++ native WebRTC

et vous pouvez certainement diffuser du contenu multimédia à partir d'une application native.

Je suis sûr que vous pouvez utiliser dummy_audio_file au streaming audio à partir d'un fichier local, et vous pouvez trouver un moyen d'accéder à la progression du streaming vidéo par vous-même.

0
simpx