Android

[Android] MediaRecorder 녹화중지 -1007 에러

SUN5066 2021. 4. 13. 15:10
반응형
mCameraTexture?.setDefaultBufferSize(mImageDimension!!.width, mImageDimension!!.height)

녹화된 파일을 저장할때

MediaRecorder VideoSize 크기가 잘못되었을때 발생하는 현상.

해결법은 카메라 미리보기 화면을 셋팅하는 함수에서

private var mImageDimension: Size? = null
private var mVideoDimension: Size? = null

private fun setPreview() {
        val characteristics = mCameraManager.getCameraCharacteristics(mCameraId!!)
        val streamConfigurationMap = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
        
        mImageDimension = streamConfigurationMap!!.getOutputSizes(SurfaceTexture::class.java)[0]
        mVideoDimension = streamConfigurationMap!!.getOutputSizes(MediaRecorder::class.java)[0]
        ...
}

이렇게 전역변수에 설정해주고,

 

MediaRecorder 를 셋팅하는 함수에서

private fun setUpMediaRecorder() {
        var file = File(Environment.getExternalStorageDirectory().toString() + "/videso.mp4")
        mMediaRecorder = MediaRecorder().apply {
            setAudioSource(MediaRecorder.AudioSource.MIC)
            setVideoSource(MediaRecorder.VideoSource.SURFACE)
            setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH))
            setVideoSize(mVideoDimension!!.width, mVideoDimension!!.height)
            setOutputFile(file.absolutePath)

            try {
                prepare()
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    }

이렇게 해주고,

 

녹화 시작 함수에 이렇게 셋팅해주자

mCameraTexture?.setDefaultBufferSize(mImageDimension!!.width, mImageDimension!!.height)
반응형