Comment coder une application de streaming vidéo / audio serveur / client?

Je dois créer un système client / serveur pour diffuser de la vidéo et de l’audio. Ce serait très simple. Comme le style youtube. Le serveur doit d’abord assister aux clients en fournissant une liste de médias et en attendant que chaque client choisisse de lancer la diffusion en continu du média. Jusqu’à ce que créer un socket et montrant une simple liste, je suis dessus;) mais je ne sais pas quelle classe pourrais-je utiliser pour diffuser. L’exemple est fondamentalement le style youtube. Comment puis-je démarrer la diffusion, comment le client peut-il suspendre la reproduction, comment? Je sais comment diffuser du texte, mais qu’en est-il de la vidéo? Connaissez-vous une page de tutoriel? C’est très différent de cet exemple de client serveur simple?

import java.io.*; import java.io.*; import java.net.*; public class ThreadedEchoServer { public static void main(Ssortingng[] 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()) { Ssortingng line = in.nextLine()) { out.println("Echo: " + line); if (line.sortingm().equals("BYE")) done = true; out.println("BYE to exit"); } } finally { incoming.close(); } } catch (IOException e) { e.printStackTrace(); } } 

J’espère que vous pourrez clarifier mes idées. Sincères amitiés.

Pour la diffusion en continu et la communication avec vos clients, vous devez définir un protocole: recherchez sur le Web RTP et RTSP. Cela devrait vous donner une assez bonne idée de ce dont vous avez besoin pour implémenter ces protocoles ou même en créer un.

En ce qui concerne la mise en œuvre, jetez un coup d’œil au projet red5: http://red5.org/

Jetez également un coup d’œil à Xuggler: http://www.xuggle.com/xuggler/ Ce projet vous aidera à économiser de nombreuses lignes de code. Notez que son développement est devenu obsolète.

À votre santé.

Découvrez le Java Media Framework (qui contient des tutoriels): http://java.sun.com/javase/technologies/desktop/media/jmf/

Est-ce que ça marche même?

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

Je pense que votre code produirait un tas de threads avec des connexions de socket entrantes … ce que vous voulez probablement faire est la suivante:

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

ThreadedEchoHandler doit prendre un Socket au lieu d’un ServerSocket. Acceptez les blocs jusqu’à ce qu’un client se connecte, sinon vous allez générer un nombre infini de threads sans connexion … Je ne pense pas que rien vous empêche de le faire pour le moment.

Les gars merci beaucoup pour vos réponses et pour l’édition du titre. Je suis nouveau ici, nouveau sur java, nouveau sur la mise en réseau. Pourquoi je fais mes compétences en streaming? C’est un cas d’étude. Je regarde beaucoup de tutoriels sur la mise en réseau et j’ai vu RTP, mais je n’ai rien lu à ce sujet, car j’ai pensé (pour la lecture sur les forums) que c’était juste pour regarder en temps réel la diffusion en continu par webcam … tellement confus LOL

Lirik bien sûr ce que tu as dit, j’ai oublié des lignes de codage

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

ou comme tu l’as dit

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

Regardant ce que vous avez dit les gars. Sincères amitiés!