MediaRecorder QML Type

CaptureSession...에서 생성된 미디어 인코딩 및 녹화용 자세한 내용은....

Import Statement: import QtMultimedia
In C++: QMediaRecorder

속성

신호

방법

자세한 설명

CaptureSession 내의 MediaRecorder 요소를 사용하여 인코딩하고 녹화합니다:

  • 오디오 인터페이스(예: 마이크 또는 라인 입력)에서 캡처한 오디오.
  • 카메라, 화면 또는 애플리케이션 창에서 캡처한 동영상.

동영상 인코딩 및 녹화 성능은 하드웨어, 운영 체제, 설치된 그래픽 드라이버 및 입력 동영상 형식에 따라 제한됩니다. Camera MediaRecorder , ScreenCapture, WindowCapture 에서 인코딩 및 녹화할 수 있는 속도보다 동영상 프레임을 더 빠르게 생성하는 경우 레코더에서 일부 프레임이 누락될 수 있습니다. 예를 들어 입력 프레임 해상도가 4K처럼 높고 하드웨어 가속 인코딩을 사용할 수 없는 경우 이런 문제가 발생할 수 있습니다.

아래 코드는 기본 카메라와 기본 오디오 입력을 사용하는 MediaRecorder가 포함된 간단한 캡처 세션을 보여줍니다.

CaptureSession {
    id: captureSession
    camera: Camera {
        id: camera
        active: true
    }
    audioInput: AudioInput {}
    recorder: MediaRecorder {
        id: recorder
    }
}

아래 코드는 녹화를 시작하고 중지하는 방법을 보여줍니다.

CameraButton {
    text: "Record"
    visible: recorder.recorderState !== MediaRecorder.RecordingState
    onClicked: recorder.record()
}

CameraButton {
    id: stopButton
    text: "Stop"
    visible: recorder.recorderState === MediaRecorder.RecordingState
    onClicked: recorder.stop()
}

CaptureSession, Camera, ScreenCapture, WindowCapture, AudioInput, ImageCapture도 참조하세요 .

속성 문서

actualLocation : url [read-only]

마지막 미디어 콘텐츠의 실제 위치입니다.

outputLocation 이 할당되면 실제 위치가 재설정됩니다. record ()가 호출되면 레코더는 다음 규칙에 따라 실제 위치를 생성합니다.

  • outputLocation 이 비어 있거나 디렉토리 또는 확장자가 없는 파일인 경우 레코더는 선택한 미디어 형식과 시스템 MIME 유형에 따라 적절한 확장자를 생성합니다.
  • outputLocation 이 디렉터리인 경우 레코더는 그 안에 새 파일 이름을 생성합니다.
  • outputLocation 이 비어 있으면 레코더는 오디오 또는 비디오에 대한 시스템별 디렉토리에 새 파일 이름을 생성합니다.
  • 레코더는 recorderStateChanged(RecordingState) 을 전송하기 전에 실제 위치를 생성합니다.

audioBitRate : int [since 6.6]

이 속성은 압축된 오디오 스트림의 비트 전송률을 초당 비트 단위로 저장합니다.

이 프로퍼티는 Qt 6.6에 도입되었습니다.


audioChannelCount : int [since 6.6]

이 프로퍼티는 오디오 채널 수를 보유합니다.

이 프로퍼티는 Qt 6.6에 도입되었습니다.


audioSampleRate : int [since 6.6]

이 프로퍼티는 오디오 샘플 레이트를 Hz 단위로 저장합니다.

이 프로퍼티는 Qt 6.6에 도입되었습니다.


duration : qint64 [read-only]

이 프로퍼티는 녹음된 미디어 길이를 밀리초 단위로 저장합니다.


encodingMode : enumeration [since 6.6]

이 프로퍼티는 인코딩 모드를 보유합니다.

이 속성은 Qt 6.6에 도입되었습니다.

QMediaRecorder::EncodingMode참조하십시오 .


error : enumeration [read-only]

이 속성은 현재 미디어 레코더 오류 상태를 보유합니다.

Constant설명
MediaRecorder.NoError에러 상태가 아닙니다.
MediaRecorder.ResourceError시스템 리소스가 충분하지 않음
MediaRecorder.FormatError현재 포맷이 지원되지 않습니다.
MediaRecorder.OutOfSpaceError장치에 남은 공간이 없습니다.
MediaRecorder.LocationNotWriteable출력 위치를 쓸 수 없습니다.

errorString : string [read-only]

이 속성에는 현재 오류 상태를 설명하는 문자열이 들어 있습니다.

error참조하세요 .


mediaFormat : MediaFormat

이 속성은 레코더의 현재 미디어 형식을 보유합니다.


metaData : mediaMetaData

이 속성은 녹화와 관련된 메타 데이터를 보유합니다.

녹화가 시작되면 할당된 모든 메타 데이터가 해당 녹화에 첨부됩니다.

참고: 녹화를 시작하기 전에 메타데이터를 할당하여 메타데이터가 올바르게 할당되었는지 확인하세요.

mediaMetaData참조하세요 .


outputLocation : url

미디어 콘텐츠의 대상 위치입니다.

예를 들어 서비스가 로컬 파일 시스템 위치만 지원하지만 네트워크 URL이 전달된 경우 위치 설정이 실패할 수 있습니다. 작업이 실패하면 errorOccured() 신호가 발생합니다.

출력 위치는 비어 있거나 디렉토리 또는 파일일 수 있습니다. 디렉토리 또는 파일 경로는 상대 또는 절대 경로일 수 있습니다. record () 메서드는 지정된 출력 위치 및 시스템별 설정에 따라 실제 위치를 생성합니다. 자세한 내용은 actualLocation 속성 설명을 참조하세요.

actualLocationerrorOccurred()도 참조하세요 .


quality : enumeration

품질 인코딩 수준을 열거합니다.

Constant
MediaRecorder.VeryLowQuality
MediaRecorder.LowQuality
MediaRecorder.NormalQuality
MediaRecorder.HighQuality
MediaRecorder.VeryHighQuality

recorderState : enumeration [read-only]

이 속성은 현재 미디어 레코더 상태를 보유합니다.

상태 속성은 사용자 요청을 나타내며 record(), pause() 또는 stop() 호출 중에 동기적으로 변경됩니다. 녹화에 실패하면 RecorderSstate가 비동기적으로 변경될 수도 있습니다.

Constant설명
MediaRecorder.StoppedState레코더가 활성화되지 않았습니다.
MediaRecorder.RecordingState녹화가 요청되었습니다.
MediaRecorder.PausedState레코더가 일시 정지 상태입니다.

videoBitRate : int [since 6.6]

이 속성은 압축된 비디오 스트림의 비트 전송률을 초당 비트로 저장합니다.

이 속성은 Qt 6.6에 도입되었습니다.


videoFrameRate : real [since 6.6]

이 속성은 비디오 프레임 속도를 보유합니다.

값이 0이면 레코더가 비디오 소스에서 사용할 수 있는 것과 코덱의 한계에 따라 최적의 선택을 해야 함을 나타냅니다.

이 프로퍼티는 Qt 6.6에 도입되었습니다.


videoResolution : Size [since 6.6]

이 프로퍼티는 인코딩된 비디오의 해상도를 보유합니다.

비디오 소스에서 사용할 수 있는 것과 코덱의 한계에 따라 레코더가 최적의 해상도를 선택하도록 하려면 비어있는 크기로 설정합니다.

이 프로퍼티는 Qt 6.6에 도입되었습니다.


신호 문서

actualLocationChanged(const QUrl &location)

녹화된 미디어의 실제 location 가 변경되었음을 알리는 신호입니다.

이 신호는 일반적으로 녹화가 시작될 때 발생합니다.

참고: 해당 핸들러는 onActualLocationChanged 입니다.


durationChanged(qint64 duration)

녹화된 미디어의 duration 이 변경되었음을 알립니다.

참고: 해당 핸들러는 onDurationChanged 입니다.


errorOccurred(Error error, const QString &errorString)

error 이 발생했음을 알립니다.

errorString 에는 오류에 대한 설명이 포함되어 있습니다.

참고: 해당 핸들러는 onErrorOccurred 입니다.


metaDataChanged()

미디어 객체의 메타데이터가 변경되었음을 알립니다.

여러 메타데이터 요소가 변경된 경우 메타데이터변경()이 한 번 발생합니다.

참고: 해당 핸들러는 onMetaDataChanged 입니다.


recorderStateChanged(RecorderState state)

미디어 레코더의 state 이 변경되었음을 알립니다.

참고: 해당 핸들러는 onRecorderStateChanged 입니다.


메서드 문서

pause()

녹화를 일시 중지합니다.

레코더 상태가 QMediaRecorder.PausedState로 변경됩니다.

플랫폼에 따라 녹화 일시 중지가 지원되지 않을 수 있습니다. 이 경우 레코더 상태는 변경되지 않습니다.


record()

녹화를 시작합니다.

레코더 상태가 MediaRecorder.RecordingState 로 즉시 변경되는 동안 녹화가 비동기적으로 시작될 수 있습니다.

녹화에 실패하면 error() 신호가 발생하고 레코더 상태가 QMediaRecorder.StoppedState 로 다시 초기화됩니다.

이 메서드는 생성 규칙에 따라 actualLocation 을 업데이트합니다.

참고: 모바일 디바이스에서는 녹화를 호출할 때 디바이스의 방향대로 녹화가 진행되며, 녹화가 진행되는 동안 잠깁니다. 사용자 인터페이스의 아티팩트를 방지하려면 녹화가 진행 중인 동안에는 창 콘텐츠방향 속성을 사용하여 사용자 인터페이스를 동일한 방향으로 잠그고 녹화가 끝나면 다시 잠금을 해제하는 것이 좋습니다.


stop()

녹화를 중지합니다.

레코더가 녹화를 중지합니다. 그러나 보류 중인 동영상 및 오디오 데이터를 처리하는 데는 여전히 시간이 걸릴 수 있습니다. 미디어 레코더의 상태가 QMediaRecorder::StoppedState 로 변경되면 녹화가 완료된 것입니다.


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.