Я пытаюсь создать приложение для видеочата wifi p2p. Я могу установить соединение wifi-p2p, и я создал простое приложение для текстового чата wifi p2p. Как захватить видео, отправить и получить его?
Я попробовал следующий код.
Когда я пытаюсь запустить это, он всегда выдает какое-то исключение, такое как: нелегалстей, исключение, mediarecorder.start () или java.net.
Тема отправителя:
public class SendVideoThread implements Runnable{
public void run(){
try {
if(SERVERIP!=null){
handler.post(new Runnable() {
@Override
public void run() {
}
});
serverSocket = new ServerSocket(SERVERPORT);
while(true) {
//listen for incoming clients
Socket client = serverSocket.accept();
handler.post(new Runnable(){
@Override
public void run(){
}
});
try{
final ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(client);
handler.post(new Runnable(){
@Override
public void run(){
recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.setVideoFrameRate(20);
recorder.setVideoSize(176,144);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
//recorder.setPreviewDisplay(mHolder.getSurface());
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
}
});
} catch (Exception e) {
handler.post(new Runnable(){
@Override
public void run(){
}
});
e.printStackTrace();
}
}
} else {
handler.post(new Runnable() {
@Override
public void run(){
}
});
}
} catch (Exception e){
handler.post(new Runnable() {
@Override
public void run() {
}
});
e.printStackTrace();
}
}
}
Тема получателя:
public class ReceiveVideoThread implements Runnable{
@Override
public void run() {
try {
clientSocket = new Socket(Data.socket.getInetAddress(),SERVERPORT);
handler.post(new Runnable() {
@Override
public void run() {
}
});
handler.post(new Runnable() {
@Override
public void run() {
try {
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(clientSocket);
pfd.getFileDescriptor().sync();
mp.setDataSource(pfd.getFileDescriptor());
pfd.close();
mp.setDisplay(mHolder);
mp.prepareAsync();
mp.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}