안드로이드 카메라의 프리뷰를 pc에서 실시간으로 볼수도 있고 영상파일로 저장도 하고 싶습니다.
안드로이드에 아래와 같이 MediaRecorder클래스를 이용하여 녹화할때 녹화파일의 저장장소를 Socket의 fileDescriptor로 변경하여 socket스트림을 보내서 pc서버에서 받으려 하였으나 pc에서 어떤방식으로 수신해야 되는지 감이 안잡힙니다. 많은 도움 부탁드립니다.
package com.example.mediasockettest;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.net.rtp.RtpStream;
import android.os.ParcelFileDescriptor;
import android.os.SystemClock;
import android.util.Log;
public class SocketClass extends Thread{
Socket socket;
MediaRecorder mediaRecorder;
ParcelFileDescriptor pfd;
Thread thread;
public SocketClass()
{
thread = new Thread(this);
thread.start();
}
public void run()
{
try {
Log.i("접속시도","접속시도");
socket=new Socket("ip주소",6000);
pfd = ParcelFileDescriptor.fromSocket(socket);
Log.i("접속성공","접속성공");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaRecorder.start();
Log.i("녹화시작","녹화시작");
Date d1=new Date();
while(true)
{
Date d2=new Date();
if((d2.getTime()-d1.getTime())>10000)
{
mediaRecorder.stop();
Log.i("녹화종료", "녹화종료");
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}