2010-01-26 4 views
3

Je me demandais s'il était possible de créer un client (ou un client web) capable de connecter deux utilisateurs, puis de leur envoyer un flux de webcam. Cela devrait se produire sans utiliser Red5 ou tout autre serveur flash/média. Quel protocole puis-je utiliser? Qu'est-ce que api etc ...Webcam streaming peer-to-peer

+1

J'ai effectivement travaillé sur cela pendant un certain temps avec mon design senior. Je n'ai pas trouvé une bonne solution. Ce que j'ai fini par faire est de tirer les données de la webcam avec DirectShow et d'envoyer les données avec un simple protocole UDP que j'ai construit (un peu comme RTP). – Will

Répondre

2

En tant que méthode super simple, regardez des tutoriels UDP:

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx

Si UDP se termine par être un peu trop peu fiable (il ne garantit pas les données arriveront où il est envoyé) vous pouvez également essayer les connexions TCP.

Cependant, l'un des plus gros problèmes que vous rencontrerez est d'essayer de passer à travers NAT. La plupart des pare-feu bloquent les données entrantes à moins qu'une connexion établie ne sorte en premier. Vous pouvez utiliser UPnP pour contourner ce problème, mais il faudra probablement un peu de code:

http://www.codeproject.com/KB/IP/upnpnattraversal.aspx

Hope this helps. Avec UDP, vous n'avez besoin que de 10 lignes de code pour envoyer et recevoir des données, avec TCP un peu plus, mais plus fiable. Google à la fois de ceux pour plus d'informations.

De là, c'est assez simple. Vous obtenez les données de la webcam. Enregistrez-le dans un MemoryStream (System.IO) en tant que fichier .jpg. Ensuite, envoyez ces données via TCP ou UDP.

1

Vous voudrez probablement utiliser TCP ou UDP directement, et envoyer/recevoir les octets bruts. Tous les protocoles de plus haut niveau seront simplement inutiles

+0

Il est utile de lire certains des autres points de réponse au sujet de NAT - au moins l'un des clients devra ouvrir un port fiable à une adresse/un numéro connu auquel l'autre peut se connecter. – Peter

1

J'ai une chose à ajouter, pour faire en sorte que deux clients, derrière leurs pare-feu respectifs, se parlent en utilisant UDP, vous devez faire une traversée NAT. C'est ainsi que fonctionne Skype.

STUN Article

1

Adobe Stratus vous permettra de faire cela.