날마다 새롭게 또 날마다 새롭게

Android app - 카메라 영상 녹화 앱 만들기 본문

프로그래밍/Android

Android app - 카메라 영상 녹화 앱 만들기

아무유 2013. 1. 30. 16:37

※ 녹화 하기 위해서는 매니페스트에 녹화 권한 요청 코드를 작성해야 한다.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.STORAGE" />    

<uses-permission android:name="android.permission.RECORD_VIDEO" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

1. MediaRecorder 클래스를 선언한다.

MediaRecorder mediaRecorder = null;

2. 녹화 옵션을 설정한다.

- 경로 및 파일 이름 설정

String sd = Environment.getExternalStorageDirectory().getAbsolutePath();

String Path = sd + "/recvideo.mp4";

- MediaRecorder 클래스 객체 생성

if(mediaRecorder==null){

mediaRecorder = new MediaRecorder();

} else {

mediaRecorder.reset();

}

- 레코딩 할 Camera Setting

mSurface.mCamera.unlock();

mediaRecorder.setCamera(mSurface.mCamera);

- Video/Audio Format, Source, Encoder, FrameRate, Size 등 설정

mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

mediaRecorder.setVideoFrameRate(30);

mediaRecorder.setVideoSize(previewsize.width, previewsize.height);

※ Camera Setting 시 previewsize 임.

mediaRecorder.setOutputFile(Path);

mediaRecorder.setMaxDuration(10000);

3. 레코드 준비

try {

mediaRecorder.prepare();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

Toast.makeText(CameraPreviewActivity.this, "IllegalStateException", 1).show();

} catch (IOException e) {

// TODO Auto-generated catch block

Toast.makeText(CameraPreviewActivity.this, "IOException", 1).show();

}

4. 레코드 시작

mediaRecorder.start();

5. 레코드 정지

Toast.makeText(getBaseContext(), "Recording Stopped", Toast.LENGTH_SHORT).show();

try {

mSurface.mCamera.reconnect();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

mediaRecorder.stop();

mediaRecorder.reset();


mSurface.mCamera.stopPreview();

mediaRecorder.release();


mSurface.mCamera.release();

mSurface.mCamera = null;




Comments