마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 카메라의 프리뷰를

0 추천

안드로이드 카메라의 프리뷰를 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();
}
 
}
 
}
 
nelll (120 포인트) 님이 2014년 7월 5일 질문
혹시 위에있는 소스로 클라이언트와 서버 완성하셨나요?
저도 비슷한것을 개발중에 있는데요 몇가지 질문좀 드릴께요

1. 패킷헤더는 어떻게 넣어야되는지요
2. 보통 패킷전송시에 bos.write(buf); bos.flush();  이렇게 두개를사용하는데 다른방법이 있는지요
3. 서버에서 패킷헤더를 읽어서 패켓데이터에 대한 정보를 얻어오는데 영상 스트리밍데이터는 어떻게 읽어오는지요

답변가능하시면 부탁드립니다.

1개의 답변

0 추천
PC에서 전용 프로그램을 만들지않고 볼 수 있는 방법이 있는데

Java Media Framework 을 사용하시면 가능할것 같네요...
nicehee (73,100 포인트) 님이 2014년 7월 13일 답변
...