Android wifi p2p приложение для видеочата - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь создать приложение для видеочата 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();
        }
    }
}
...