2010-02-22 28 views
9

Tengo que crear un sistema cliente/servidor para transmitir video y audio. Sería muy simple. Como el estilo de youtube El servidor debe atender a los clientes que proporcionan una lista de los medios primero y esperar la elección de cada cliente para comenzar a transmitir los medios. Hasta que crea un socket y muestra una lista simple, estoy en él;) Pero no sé qué clase podría usar para transmitir. El ejemplo es básicamente el estilo de youtube. ¿Cómo puedo iniciar la transmisión? ¿Cómo puede el cliente detener la reproducción? ¿Cómo puede hacerlo? Sé cómo transmitir texto, pero ¿qué pasa con el video? ¿Conoces alguna página de tutorial? ¿Es muy diferente de este simple ejemplo de cliente de servidor?¿Cómo puedo codificar una aplicación de transmisión de audio y video de servidor/cliente?

import java.io.*; 
import java.io.*; 
import java.net.*; 

public class ThreadedEchoServer { 

    public static void main(String[] args) { 
     try { 
     int i = 1; 
     ServerSocket s = new ServerSocket(8189); 

     while(true) { 
      Runnable r = new ThreadedEchoHandler(incoming, i); 
      Thread t = new Thread(r); 
      t.start(); 
      i++; 
     } 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 
    } 
} 

class ThreadedEchoHandler implements Runnable { 
    private Socket incoming; 
    private int counter; 

    public ThreadedEchoHandler(Socket i, int c) { 
     incoming = i; 
     counter = c; 
    } 

    public void run() { 
     try { 
     try { 
      InputStream inStream = incoming.getInputStream(); 
      OutputStream outStream = incoming.getOutputStream(); 

      Scanner in = new Scanner(inStream); 
      PrintWriter out = new PrintWriter(outStream); 

      out.println("BYE to exit"); 
      boolean done = false; 

      while (!done && in.hasNextLine()) { 

       String line = in.nextLine()) { 
       out.println("Echo: " + line); 

       if (line.trim().equals("BYE")) 
        done = true; 
       out.println("BYE to exit"); 
      } 
     } finally { 
      incoming.close(); 
     } 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 
} 

Espero que puedas aclarar mis ideas. Saludos cordiales.

+1

¿Cuál es su experiencia con las redes Java? ¿Ya has codificado, por ejemplo, un servidor web simple en Java? –

+0

¿Duplicado? http://stackoverflow.com/questions/2294641/how-to-make-a-java-applet-that-displays-youtube-embed-video – trashgod

Respuesta

6

Para transmitir y hablar con sus clientes, debe definir un protocolo: Busque en la web RTP y RTSP. Debería darte una buena idea de lo que necesitas para implementar estos protocolos o incluso crear uno propio.

En cuanto a la implementación, echar un vistazo al proyecto red5: http://osflash.org/red5

Tome un vistazo a Xuggler así: http://www.xuggle.com/xuggler/ Este proyecto le ayudará a ahorrar una gran cantidad de líneas de código.

Saludos.

1

Salida Java Media Framework (tiene tutoriales): http://java.sun.com/javase/technologies/desktop/media/jmf/

¿Este incluso trabajan?

 while(true) { 
     Runnable r = new ThreadedEchoHandler(incoming, i); 
     Thread t = new Thread(r); 
     t.start(); 
     i++; 
    } 

creo que el código podría producir un haz de hilos con conexiones de socket entrantes ... lo que es probable que desee hacer es lo siguiente:

 while(true) { 
     Runnable r = new ThreadedEchoHandler(incoming.accept(), i); 
     Thread t = new Thread(r); 
     t.start(); 
     i++; 
    } 

El ThreadedEchoHandler debe tomar un zócalo en lugar de un ServerSocket . Acepta bloques hasta que un cliente se conecte, de lo contrario estarás generando una cantidad infinita de hilos sin conexión ... No creo que tengas nada que te impida hacer eso en este momento.

0

Muchachos muchas gracias por sus respuestas y por el título de edición. Soy nuevo aquí, nuevo en Java, nuevo en redes. ¿Por qué estoy haciendo mi habilidad en la transmisión? Es un caso de estudio. Estoy viendo muchos tutoriales sobre redes y vi RTP pero no lo leí porque pensé (para leer en los foros) que era solo en tiempo real la transmisión de la cámara web ... pero es que yo ' m acaba de LOL tan confundido

Lirik por supuesto lo que ha dicho, se me olvidó algunas líneas de codificación

while(true) { 
    Socket incoming = s.accept(); 
    Runnable r = new ThreadedEchoHandler(incoming, i); 
    ... 

o como usted dijo

while(true) { 
    Runnable r = new ThreadedEchoHandler(s.accept(), i); 
    ... 

Echando un vistazo a lo que ha dicho chicos. Saludos cordiales!

Cuestiones relacionadas