일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- log
- C
- Hyperledger
- fabic
- 다윈
- quick-start
- hardwareacceleration
- vuepress
- 안드로이드
- bigquery
- porterduff
- coroutines
- dataginding
- web3js
- fabric-sdk-java
- Realm
- kotlin
- ethereum
- test
- Gradle
- 스트리밍
- LAYER_TYPE_SOFTWARE
- error
- Android
- Exception
- 컴파일
- Glide
- convert
- null safety
- firebase
- Today
- Total
날마다 새롭게 또 날마다 새롭게
Android app - 카메라 영상 녹화 앱 만들기 본문
※ 녹화 하기 위해서는 매니페스트에 녹화 권한 요청 코드를 작성해야 한다.
<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;