La respuesta es más o menos no ... bueno, es sólo que no, para ser honesto.
@drudru señaló la tecnología adecuada para flash p2p, es decir, stratus.
Flash p2p se basa en RTMFP, que se basa en UDP. En realidad, el flash se une a un puerto, pero esto proviene de las partes internas. No hay API para hacerlo manualmente.
RTMFP permite básicamente dos cosas:
- de streaming UDP (no fiable, pero rápido) para vídeo y audio. Desde el lado del flash, solo puede publicar la secuencia de su cámara y micrófono. Desde el servidor, casi cualquier cosa.
- Hacer llamadas remotas al otro punto final de la conexión p2p. Esto puede usarse para transferir datos. Esta comunicación está asegurada, es decir, el orden del paquete y la integridad se mantienen mediante el reproductor flash.
El p2p se basa en NAT punchthroughs. Stratus en sí es el servidor de presentación. Además, por razones de seguridad, una conexión p2p también significa que ambos clientes deben tener una conexión TCP en reposo (si no recuerdo mal) al servidor. Supongo que se transmiten un poco de datos, por supuesto, pero no la carga útil.
Sin embargo, el protocolo de torrent es muy diferente de esto. Por lo tanto, esta no es una opción. Podría construir un protocolo equivalente sobre RTMFP, aplicar ingeniería inversa al servicio stratus (o esperar hasta que esté abierto). Por supuesto, esto también podría ser utilizado por clientes no flash. Pero, de nuevo, no podría ver los datos transmitidos como un video, ya que obtendrá como un parámetro de alguna llamada al cliente de su NetStream
, probablemente un ByteArray
. Y no puedes reproducir ByteArray
s. Podrías escribir clientes no flash, que publiquen videos como una transmisión, pero eso estaría muy lejos de lo que querías, supongo.
Si realmente quieres hacer algo como eso, necesitas Java. Puede firmar applets de Java y, si el usuario acepta el certificado, tiene acceso prácticamente sin restricciones, p. puedes vincular puertos. Como Java puede hacer UDP, podrías tener un applet de Java, que haga el torrenting (quizás solo uses el código base de Vuze) y si realmente deseas mostrarlo en flash (que a su vez requiere flv), entonces podrías hacer mimo a un local ". Flash Media Server "y publique el video en localhost: someport. Pero en realidad, la broca parece ridículamente complicada e inútil para mí. Más bien intente reproducir con Java, que con suerte tiene una opción para hacerlo de forma nativa.
Gracias, respuesta bastante completa. – snitko
Suena muy parecido a lo que hacen los ninjavideo con su ninjavideo helper, excepto que se conectan a localhost usando el reproductor web divx no flash. – Enriquev