Camera mCamera = Camera.open();
MediaRecorder mMediaRecorder = new MediaRecorder();
Button start;
Button end;
boolean isRecording = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.button1);
end = (Button) findViewById(R.id.button2);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
File file = Environment.getExternalStorageDirectory();
String path = file.getAbsolutePath() + "/test.mp4";
/*
OutputStream out = null;
try {
out = new BufferedOutputStream(new FileOutputStream(file));
} finally {
if (out != null) {
out.close();
}
}
FileDescriptor fd = new FileDescriptor();
fd.
*/
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoFrameRate(5);
mMediaRecorder.setVideoSize(320, 240);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setOutputFile(path);
mMediaRecorder.prepare();
mMediaRecorder.start();
isRecording = true;
Toast.makeText(getApplicationContext(), "녹화를 시작합니다.",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "녹화를 시작할수없습니다.",
Toast.LENGTH_LONG).show();
}
}
});
end.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (isRecording) {
Toast.makeText(getApplicationContext(), "녹화가 종료되었습니다.",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "녹화가 진행되지않았습니다.",
Toast.LENGTH_LONG).show();
return;
}
mMediaRecorder.release();
}
});
}
제가 사용한 셈플소스입니다. 영상을 보여주는 뷰는 설정하지 않았구요
에러 로그는 다음과 같습니다.
01-15 15:13:19.282: V/MediaRecorder(5255): setCamera(0x7667cd30,0x784a03c8)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setVideoSource(1)
01-15 15:13:19.282: V/MediaRecorder(5255): setVideoSource(1)
01-15 15:13:19.282: V/MediaRecorder(5255): Call init() since the media recorder is not initialized yet
01-15 15:13:19.282: V/MediaRecorder(5255): init
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setOutputFormat(2)
01-15 15:13:19.282: V/MediaRecorder(5255): setOutputFormat(2)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setVideoFrameRate(5)
01-15 15:13:19.282: V/MediaRecorder(5255): setVideoFrameRate(5)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setVideoSize(320, 240)
01-15 15:13:19.282: V/MediaRecorder(5255): setVideoSize(320, 240)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setVideoEncoder(2)
01-15 15:13:19.282: V/MediaRecorder(5255): setVideoEncoder(2)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): setOutputFile
01-15 15:13:19.282: V/MediaRecorder(5255): setOutputFile(58, 0, 0)
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): prepare
01-15 15:13:19.282: V/MediaRecorder(5255): prepare
01-15 15:13:19.282: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.282: V/MediaRecorderJNI(5255): start
01-15 15:13:19.282: V/MediaRecorder(5255): start
01-15 15:13:19.282: I/ViewRootImpl(5255): ViewRoot's Touch Event : Touch UP
01-15 15:13:19.352: E/MediaRecorder(5255): start failed: -19
01-15 15:13:19.352: V/MediaRecorderJNI(5255): process_media_recorder_call
01-15 15:13:19.352: W/System.err(5255): java.lang.RuntimeException: start failed.
01-15 15:13:19.352: W/System.err(5255): at android.media.MediaRecorder.native_start(Native Method)
01-15 15:13:19.352: W/System.err(5255): at android.media.MediaRecorder.start(MediaRecorder.java:758)
01-15 15:13:19.352: W/System.err(5255): at com.example.mediasendstream.MainActivity$1.onClick(MainActivity.java:66)
01-15 15:13:19.352: W/System.err(5255): at android.view.View.performClick(View.java:4442)
01-15 15:13:19.352: W/System.err(5255): at android.view.View$PerformClick.run(View.java:18473)
01-15 15:13:19.352: W/System.err(5255): at android.os.Handler.handleCallback(Handler.java:733)
01-15 15:13:19.352: W/System.err(5255): at android.os.Handler.dispatchMessage(Handler.java:95)
01-15 15:13:19.352: W/System.err(5255): at android.os.Looper.loop(Looper.java:136)
01-15 15:13:19.352: W/System.err(5255): at android.app.ActivityThread.main(ActivityThread.java:5118)
01-15 15:13:19.352: W/System.err(5255): at java.lang.reflect.Method.invokeNative(Native Method)
01-15 15:13:19.352: W/System.err(5255): at java.lang.reflect.Method.invoke(Method.java:515)
01-15 15:13:19.352: W/System.err(5255): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
01-15 15:13:19.352: W/System.err(5255): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
01-15 15:13:19.352: W/System.err(5255): at dalvik.system.NativeStart.main(Native Method)
에러 원인에 대해서 전혀 감이 잡히질 않습니다.