私は2つの簡単なプログラム、サーバーとクライアントの両方をlocalhostに持っています。私がしたいのは、サーバーからクライアントへのビデオをソケット経由でストリーミングし、クライアントがソケットのfilediscriptorを使用してビデオを再生できるようにすることです。最初にメッセージを送信しようとしましたが、クライアントはそれを受け取ることができます。その後、サーバーのカードからクライアントにビデオの数バイトを送ります。クライアントはこれらのバイトを受信できますが、再生できません。誰もが問題を解決する方法を知っていますか?ここでビデオはソケットを介してストリーミングされ、クライアントから再生されます
は私のサーバーとクライアントのコードスニペットです:
サーバー:
//Receive request from client.
Socket client=serversocket.accept();
System.out.println("accept");
//Receive client message.
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
String str=in.readLine();
System.out.println("read:"+str);
//Send message to client.
//PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
//out.println("server message");
FileInputStream fis=new FileInputStream("/sdcard/toystory3.3gp");
byte buffer[]=new byte[2000];
fis.read(buffer,0,20);
DataOutputStream out=new DataOutputStream(client.getOutputStream());
out.write(buffer,0,20);
in.close();
out.close();
client.close();
System.out.println("close");
クライアント:
Socket socket=new Socket("127.0.0.1",4444);
String message="Initial"+"\r\n";
//Send message to server.
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
//Receive message from server.
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg=br.readLine();
//ParcelFileDescriptor pfd=ParcelFileDescriptor.fromSocket(socket);
//MediaPlayer m=new MediaPlayer();
//m.setDataSource(pfd.getFileDescriptor());
//m.prepare();
//m.start();
if(msg!=null)
{
System.out.println("Data received.");
System.out.println(msg);
}
else
{
System.out.println("Data not received.");
}
out.close();
br.close();
socket.close();
私の見ている - http://stackoverflow.com/questions/6116880/stream-live-video-from-phone-to-phone-using-socket-fd/10260068#10260068 –