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

MediaRecord 질문 있습니다.

0 추천
제가 지금 비디오 화면 녹화를 구현 하고 있습니다.

카메라가 아닌 현재 보여주는 화면과 소리를 구현 하는 게 목적입니다.

            mMediaRecord = new MediaRecorder();

            mMediaRecord.setAudioSource(MediaRecorder.AudioSource.MIC);

            mMediaRecord.setVideoSource(MediaRecorder.VideoSource.SURFACE);

            mMediaRecord.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            int width = size.x;
            int height = size.y;
            mMediaRecord.setVideoSize(width, height);

            mMediaRecord.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

            mMediaRecord.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

            saveFile = "적당한 Path";
            mMediaRecord.setOutputFile(saveFile);
        try
        {
            mMediaRecord.prepare();
        }
        catch (IOException e)
        {
            Log.d("UnityTest", e.getMessage());
        }
        catch (Exception e)
        {
            Log.d("UnityTest", e.getMessage());
        }
            mMediaRecord.start();

 

이렇게 MediaRecord를 실행 하려 하는 데 start() 에서 java.lang.IllegalStateException 에러를 띄웁니다.

이유를 모르겠습니다. 이거 어떻게 해결해야 합니까?
허접검 (550 포인트) 님이 2019년 4월 4일 질문

1개의 답변

+1 추천

MediaRecorder.VideoSource.SURFACE 는 

https://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html#SURFACE 에 설명 되어 있듯 Camera2 API를 사용해야만 합니다.

화면 녹화를 원하시면 MediaProjection 를 사용하시는게 좋을 겁니다.

 

익명사용자 님이 2019년 4월 5일 답변
...