Как я могу кодировать приложение потоковой передачи видео и потоковой передачи аудио сервера/клиента?

Я должен создать клиент-серверную систему для потоковой передачи видео и аудио. Это было бы очень просто. Как стиль YouTube. Сервер должен сопроводить клиенты, предоставляющие список medias сначала и ожидающие выбор каждого клиента начать передавать медиа потоком. До создают сокет и показ простого списка, я нахожусь на нем;), Но я не знаю, который класс мог я использовать для потока. Примером является в основном стиль YouTube. Как я могу начать передавать потоком, Как клиент может приостановить воспроизведение, как может? Я знаю, как передать текст потоком, но что относительно видео? Вы знаете какую-либо учебную страницу? Это очень отличается от этого простого клиентского примера сервера?

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

Надежда Вы могли разъяснить мои идеи. С наилучшими пожеланиями.

11
задан Justin Johnson 22 February 2010 в 01:36
поделиться

3 ответа

Для потоковой передачи и общения с клиентами вам необходимо определить протокол: поиск в Интернете RTP и RTSP. Это должно дать вам довольно хорошее представление о том, что вам нужно для реализации этих протоколов или даже для создания своего собственного.

Что касается реализации, взгляните на проект red5: http://red5.org/

Взгляните также на Xuggler: http://www.xuggle.com/ xuggler / Этот проект поможет вам сэкономить много строк кода. Обратите внимание, что его разработка устарела.

Ура.

10
ответ дан 3 December 2019 в 09:41
поделиться

Ознакомьтесь с Java Media Framework (в нем есть учебные пособия): http://java.sun.com/javase/technologies/desktop/media / jmf /

Это вообще работает?

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

Я думаю, ваш код создаст кучу потоков с входящими сокетными соединениями ... вы, вероятно, захотите сделать следующее:

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

ThreadedEchoHandler должен использовать Socket вместо ServerSocket. Принимайте блоки до тех пор, пока клиент не подключится, иначе вы создадите бесконечное количество потоков без подключения ... Я не думаю, что у вас есть что-то, что помешает вам сделать это в данный момент.

1
ответ дан 3 December 2019 в 09:41
поделиться

Ребята, спасибо большое за ваши ответы и за редактирование названия. Я здесь новичок, новичок в java, новичок в сетевых технологиях. Почему я делаю свой навык на потоковой передаче? Это учебный пример. Я просматриваю много учебников по сетевым технологиям и я видел RTP, но я не читал о, потому что я думал (для чтения на форумах), что это только для потокового вещания в реальном времени, как потоковое вещание веб-камеры... но это то, что я просто так запутался LOL

Lirik конечно, что вы сказали, я забыл некоторые строки кодирования

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

или как вы сказали

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

Присмотрюсь к тому, что вы сказали, ребята. С уважением!

0
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: