2010-02-22 48 views
9

Tôi phải tạo hệ thống máy khách/máy chủ để phát trực tuyến video và âm thanh. Nó sẽ rất đơn giản. Giống như phong cách youtube. Các máy chủ nên tham dự khách hàng cung cấp một danh sách các phương tiện truyền thông đầu tiên và chờ đợi sự lựa chọn của mỗi khách hàng để bắt đầu streaming các phương tiện truyền thông. Cho đến khi tạo ra một ổ cắm và hiển thị một danh sách đơn giản tôi đang ở trên đó;) Nhưng tôi không biết lớp nào tôi có thể sử dụng để truyền. Ví dụ về cơ bản là phong cách youtube. Làm thế nào tôi có thể bắt đầu phát trực tuyến, Làm thế nào khách hàng có thể tạm dừng tái tạo, làm thế nào có thể? Tôi biết cách truyền trực tuyến văn bản nhưng về video thì sao? Bạn có biết bất kỳ trang hướng dẫn nào không? Nó rất khác với ví dụ máy khách đơn giản của máy chủ này?Tôi làm cách nào để mã hóa ứng dụng phát video và âm thanh của máy chủ/khách hàng?

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

Hy vọng bạn có thể làm rõ ý tưởng của mình. Trân trọng.

+1

Trải nghiệm của bạn với mạng Java là gì? Bạn đã mã hóa, nói, một máy chủ web đơn giản trong Java chưa? –

+0

Sao chép? http://stackoverflow.com/questions/2294641/how-to-make-a-java-applet-that-displays-youtube-embed-video – trashgod

Trả lời

6

Để phát trực tuyến và trò chuyện với khách hàng của bạn, bạn cần xác định giao thức: Tìm kiếm trên web cho RTP và RTSP. Nó sẽ cung cấp cho bạn một ý tưởng khá tốt về những gì bạn cần để thực hiện các giao thức này hoặc thậm chí tạo một giao thức của riêng bạn.

Đối với việc thực hiện, hãy nhìn vào các dự án red5: http://osflash.org/red5

Hãy xem Xuggler cũng như: http://www.xuggle.com/xuggler/ Dự án này sẽ giúp bạn tiết kiệm rất nhiều dòng mã.

Chúc mừng.

1

Check-out Java Media Framework (nó có hướng dẫn): http://java.sun.com/javase/technologies/desktop/media/jmf/

Điều này thậm chí làm việc?

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

Tôi nghĩ rằng mã của bạn sẽ tạo ra một loạt các chủ đề với các kết nối ổ cắm đến ... những gì có thể bạn muốn làm là thế này:

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

Các ThreadedEchoHandler nên một Socket thay vì một ServerSocket . Chấp nhận các khối cho đến khi một khách hàng kết nối, nếu không bạn sẽ sinh ra một số lượng vô hạn các luồng mà không có một kết nối ... Tôi không nghĩ rằng bạn có bất cứ điều gì sẽ ngăn bạn làm điều đó vào lúc này.

0

Các bạn cảm ơn bạn rất nhiều vì câu trả lời của bạn và để chỉnh sửa tiêu đề. Tôi mới ở đây, mới trên java, mới trên mạng. Tại sao tôi làm kỹ năng phát trực tiếp? Đó là một trường hợp nghiên cứu. Tôi đang xem nhiều hướng dẫn về kết nối mạng và tôi thấy RTP nhưng tôi không đọc về 'vì tôi nghĩ (để đọc trên diễn đàn) nó chỉ dành cho thời gian thực có nghĩa là webcam streaming ... nhưng đó là tôi' m chỉ rất bối rối LOL

Lirik tất nhiên những gì bạn nói, tôi quên mất một số dòng mã hóa

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

hoặc như bạn nói

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

nhìn vào những gì bạn nói chàng trai. Trân trọng!

Các vấn đề liên quan