Android의 Camera2API를 사용하여 동영상을 촬영합니다.

3734 단어 AndroidCamera2API
Android의 Camera2API를 사용하여 카메라 미리보기 화면 표시
계속

개요


아래의 공식 샘플을 공개했다.
이를 예로 들어 설명하다.
Android Camera2Video Sample
카메라 이미지의 출력 목적지로
사진(정적 이미지)의 경우 ImageReader가 사용됩니다.
비디오의 경우 미디어 레코더를 사용합니다.

MediaRecorder


오디오 및 비디오를 캡처하고 인코딩하는 클래스입니다.
reference : MediaRecorder
사용 방법은 아래의 보도를 참고하십시오.
참고: 매개변수 설정에는 순서가 있습니다.
위반하면 IllegalStateException이 발생합니다.
mediarecorder로 녹화
다음과 같이 미디어 레코더를 생성합니다.
    Size videoSize;
    String outputFile;
    int orientation;
        MediaRecorder mediaRecorder = new MediaRecorder();
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setOutputFile(outputFile);
        mediaRecorder.setVideoEncodingBitRate(10000000);
        mediaRecorder.setVideoFrameRate(30);
        mediaRecorder.setVideoSize(videoSize.getWidth(), videoSize.getHeight());
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mediaRecorder.setOrientationHint(orientation);
        mediaRecorder.prepare();

녹화 시작


Record 단추 클릭
미디어 레코더를 출력 목표로 삼아 포획을 요청합니다.
            previewBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
            List<Surface> surfaces = new ArrayList<>();
            surfaces.add(previewSurface);
            previewBuilder.addTarget(previewSurface);
            Surface recorderSurface = mediaRecorder.getSurface();
            surfaces.add(recorderSurface);
            previewBuilder.addTarget(recorderSurface);
      cameraDevice.createCaptureSession(surfaces,  cameraCaptureSession.StateCallback, backgroundHandler);
자세한 내용을 확인한 후
CameraCaptureSession.StateCallback에서 onConfigured라고 합니다.
이를 계기로 녹화를 시작하다.
CameraCaptureSession.StateCallback() {
                @Override
                public void onConfigured( CameraCaptureSession cameraCaptureSession) {
                            mediaRecorder.start();

녹화 종료


Record 버튼을 클릭하여 미디어 Recorder를 중지하고 리소스를 방출합니다.
        mediaRecorder.stop();
        mediaRecorder.reset();

미디어 레코더 출력 형식


공식 샘플은 MPEG4입니다.
아래와 같이 10가지 정도가 있다.
MediaRecorder.OutputFormat.xxx
Value
Name
Remarks
0
DEFAULT

THREE_GPP

MPEG_사

AMR_NB

AMR_WB

AAC_ADIF

AAC_ADTS

RTP_AVP

MPEG_2_TS
Added in API level 26

WEBM
십일
OGG
Added in API level 29
reference : MediaRecorder.OutputFormat
PEG4는 현재 주류로 아무런 장애도 없다.
근데 선택이 있으면 해보고 싶어요.
기본 설정 프레임을 사용하여 선택합니다.

샘플 코드가github에 발표되었습니다.
https://github.com/ohwada/Android_Samples/tree/master/Camera213

좋은 웹페이지 즐겨찾기