How can I code a server/client video and audio streaming application?

59,258

Solution 1

For streaming and talking to your clients, you need to define a protocol: Search the web for RTP and RTSP. It should give you a pretty good idea of what you need to implement these protocols or even create your own one.

As for implementing, take a look at the red5 project: http://red5.org/

Take a look at Xuggler as well: http://www.xuggle.com/xuggler/ This project will help you saving lots of lines of code. Note that its development has gone stale.

Cheers.

Solution 2

Check out the Java Media Framework (it has tutorials): http://java.sun.com/javase/technologies/desktop/media/jmf/

Does this even work?

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

I think your code would produce a bunch of threads with incoming socket connections... what you probably want to do is this:

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

The ThreadedEchoHandler should take a Socket instead of a ServerSocket. Accept blocks until a client connects, otherwise you'll be spawning an infinite number of threads without a connection... I don't think you have anything that will stop you from doing that at the moment.

Share:
59,258
Mahmudul Hasan Sagar
Author by

Mahmudul Hasan Sagar

Updated on May 30, 2020

Comments

  • Mahmudul Hasan Sagar
    Mahmudul Hasan Sagar almost 4 years

    I have to create a client/server system to stream video and audio. It would be very simple. Like youtube style. The server should attend clients providing a list of medias first and waiting the choice of each client to start streaming the media. Until create a socket and showing a simple list I'm on it ;) But I don't know which class could I use to stream. The example is basically youtube style. How can I start streaming, How can client pause reproduction, how can? I know how to stream text but what about video? Do you know any tutorial page? It's very different from this simple server client example?

    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();
          }
    }
    

    Hope you could clarify my ideas. Kind regards.