Dev/Android
Android 화면 레코딩 방법 - MediaRecorder
healthyryu
2019. 6. 10. 18:21

안드로이드에서 화면(디스플레이 스크린)을 녹화하기 방식을 검색하다보면 아래와 같은 구현 방식이 나온다.
아래와 같이 구현했을 경우, 녹화된 화면의 화질이 좋지 않았다.
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFile(mReviewPath);
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
mediaRecorder.setVideoSize(displayMetrics.widthPixels, displayMetrics.heightPixels);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncodingBitRate(512 * 1000);
mediaRecorder.setVideoFrameRate(30);
그래서, 화질 개선을 위해서 검색을 해보니, 당연하게 보이는 VideoFrameRate, OuputFormat VideoEncodingBitRate 를 직접 바꿀 수도 있었다. 그러나 조금 더 심플한 방법도 있다는걸 알게되었다.
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
setProfile() 함수를 사용할 경우 괜찮은 화질의 영상을 녹화시켜준다.
그리고 setProfile() 을 사용하기 위해서는 다음의 함수는 제거해줘야 한다. 또한 setProfile() 은 setVideoSize() 위에 배치되어야 한다.
- setOutputFormat()
- setVideoEncoder()
- setAudioEncoder();
- setVideoEncodingBitRate()
- setVideoFrameRate()
< 화면 녹화 최종 코드 >
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setOutputFile(mReviewPath);
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
mediaRecorder.setVideoSize(displayMetrics.widthPixels, displayMetrics.heightPixels);
반응형