MediaRecorder QML Type
CaptureSession 에서 생성된 미디어를 인코딩 및 기록하기 위해. 더 보기...
| Import Statement: | import QtMultimedia |
| In C++: | QMediaRecorder |
속성
- actualLocation : url
- audioBitRate : int
(since 6.6) - audioChannelCount : int
(since 6.6) - audioSampleRate : int
(since 6.6) - duration : qint64
- encodingMode : enumeration
(since 6.6) - error : enumeration
- errorString : string
- mediaFormat : mediaFormat
- metaData : mediaMetaData
- outputLocation : url
- quality : enumeration
- recorderState : enumeration
- videoBitRate : int
(since 6.6) - videoFrameRate : real
(since 6.6) - videoResolution : Size
(since 6.6)
신호
- actualLocationChanged(const QUrl &location)
- durationChanged(qint64 duration)
- errorOccurred(Error error, const QString &errorString)
- metaDataChanged()
- recorderStateChanged(RecorderState state)
방법
자세한 설명
CaptureSession 내에서 MediaRecorder 요소를 사용하여 다음을 인코딩하고 녹음합니다:
- 오디오 인터페이스(마이크 또는 라인 입력 등)에서 캡처된 오디오.
- 카메라, 화면 또는 애플리케이션 창에서 캡처된 비디오.
동영상 인코딩 및 녹화 성능은 하드웨어, 운영 체제, 설치된 그래픽 드라이버 및 입력 동영상 형식에 따라 제한됩니다. Camera, ScreenCapture 또는 WindowCapture 에서 생성되는 비디오 프레임의 속도가 MediaRecorder 가 이를 인코딩하고 녹화할 수 있는 속도보다 빠를 경우, 레코더가 일부 프레임을 생략할 수 있습니다. 이는 입력 프레임 해상도가 높을 때(예: 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]
이 속성은 현재 미디어 레코더의 오류 상태를 저장합니다.
| 상수 | 설명 |
|---|---|
MediaRecorder.NoError | 오류 상태가 아닙니다. |
MediaRecorder.ResourceError | 시스템 리소스가 부족합니다. |
MediaRecorder.FormatError | 현재 형식이 지원되지 않습니다. |
MediaRecorder.OutOfSpaceError | 장치에 남은 공간이 없습니다. |
MediaRecorder.LocationNotWriteable | 출력 위치에 쓰기가 불가능합니다. |
errorString : string [read-only]
이 속성은 현재 오류 상태를 설명하는 문자열을 저장합니다.
error도 참조하십시오 .
mediaFormat : mediaFormat
이 속성은 레코더의 현재 MediaFormat을 저장합니다.
metaData : mediaMetaData
이 속성은 녹음과 관련된 메타데이터를 포함합니다.
녹화가 시작되면, 할당된 모든 메타데이터가 해당 녹화에 첨부됩니다.
참고: 녹화를 시작하기 전에 메타데이터를 할당하여 올바르게 할당되었는지확인하십시오 .
참조: mediaMetaData.
outputLocation : url
미디어 콘텐츠의 대상 위치입니다.
서비스가 로컬 파일 시스템 위치만 지원하는데 네트워크 URL이 전달된 경우와 같이, 위치 설정에 실패할 수 있습니다. 작업이 실패하면 ` errorOccurred()` 신호가 발생합니다.
출력 위치는 빈 값, 디렉터리 또는 파일일 수 있습니다. 디렉터리나 파일의 경로는 상대 경로이거나 절대 경로일 수 있습니다. record() 메서드는 지정된 출력 위치와 시스템별 설정에 따라 실제 위치를 생성합니다. 자세한 내용은 actualLocation 속성 설명을 참조하십시오.
actualLocation 및 errorOccurred()도 참조하십시오 .
quality : enumeration
품질 인코딩 레벨을 열거합니다.
| 상수 | 값 |
|---|---|
MediaRecorder.VeryLowQuality | |
MediaRecorder.LowQuality | |
MediaRecorder.NormalQuality | |
MediaRecorder.HighQuality | |
MediaRecorder.VeryHighQuality |
recorderState : enumeration [read-only]
이 속성은 현재 미디어 레코더의 상태를 저장합니다.
이 state 속성은 사용자 요청을 나타내며, record(), pause() 또는 stop() 호출 중에 동기적으로 변경됩니다. 또한 녹화가 실패할 경우 RecorderState가 비동기적으로 변경될 수도 있습니다.
| 상수 | 설명 |
|---|---|
MediaRecorder.StoppedState | 레코더가 활성화되어 있지 않습니다. |
MediaRecorder.RecordingState | 녹화가 요청되었습니다. |
MediaRecorder.PausedState | 레코더가 일시 정지 상태입니다. |
videoBitRate : int [since 6.6]
이 속성은 압축된 비디오 스트림의 비트 전송률(초당 비트 수)을 저장합니다.
이 속성은 Qt 6.6에서 도입되었습니다.
videoFrameRate : real [since 6.6]
이 속성은 인코딩에 사용되는 비디오 프레임 속도를 지정합니다.
이 속성이 양수의 프레임 속도로 설정된 경우, MediaRecorder 는 해당 속도로 인코딩을 시도합니다. 비디오 소스와 리코더의 프레임 속도가 다른 경우, 목표 속도에 도달하기 위해 소스의 프레임이 생략되거나 중복될 수 있습니다.
기본값(-1)으로 두거나 양수가 아닌 다른 값으로 설정하면, MediaRecorder 는 동영상 소스 및 코덱의 제한 사항을 바탕으로 최적의 선택을 시도합니다.
이 속성은 Qt 6.6에서 도입되었습니다.
videoResolution : Size [since 6.6]
이 속성은 인코딩된 비디오의 해상도를 저장합니다.
Size 속성을 비워두면 레코더가 비디오 소스에서 제공되는 정보와 코덱의 제한 사항을 바탕으로 최적의 해상도를 선택합니다.
이 속성은 Qt 6.6에서 도입되었습니다.
신호 문서
actualLocationChanged(const QUrl &location)
녹화된 미디어의 실제 location 가 변경되었음을 나타내는 신호입니다.
이 신호는 일반적으로 녹화가 시작될 때 발생합니다.
참고: 해당 핸들러는 onActualLocationChanged 입니다.
durationChanged(qint64 duration)
기록된 미디어의 duration 가 변경되었음을 나타내는 신호입니다.
참고: 해당 핸들러는 onDurationChanged 입니다.
errorOccurred(Error error, const QString &errorString)
error 가 발생했음을 나타내는 신호입니다.
errorString 에는 오류에 대한 설명이 포함되어 있습니다.
참고: 해당 핸들러는 onErrorOccurred 입니다.
metaDataChanged()
미디어 객체의 메타데이터가 변경되었음을 알립니다.
여러 메타데이터 요소가 변경된 경우 metaDataChanged()가 한 번 발생합니다.
참고: 이에 대응하는핸들러는 onMetaDataChanged 입니다.
recorderStateChanged(RecorderState state)
미디어 레코더의 state 가 변경되었음을 알리는 신호입니다.
참고: 해당 핸들러는 onRecorderStateChanged 입니다.
메서드 설명
void pause()
녹음을 일시 중지합니다.
레코더 상태가 ` QMediaRecorder.PausedState`로 변경됩니다.
플랫폼에 따라 녹화 일시 중지 기능이 지원되지 않을 수 있습니다. 이 경우 레코더 상태는 변경되지 않습니다.
void record()
녹화를 시작합니다.
레코더 상태는 즉시 ' MediaRecorder.RecordingState'로 변경되지만, 녹화는 비동기적으로 시작될 수 있습니다.
녹화가 실패하면 error() 신호가 발산되고 레코더 상태는 QMediaRecorder.StoppedState 로 재설정됩니다.
이 메서드는 생성 규칙에 따라 ` actualLocation `를 업데이트합니다.
참고: 모바일기기에서 녹화는 record 호출 시 기기의 방향대로 진행되며, 녹화 기간 동안 기기의 방향은 고정됩니다. 사용자 인터페이스에 이상 현상이 발생하지 않도록 하려면, 녹화가 진행되는 동안 Window의 contentOrientation 속성을 사용하여 사용자 인터페이스를 동일한 방향으로 고정해 두었다가, 녹화가 끝나면 다시 잠금을 해제하는 것이 좋습니다.
void stop()
녹화를 중지합니다.
레코더가 녹화를 중지합니다. 단, 처리 대기 중인 영상 및 오디오 데이터의 처리에 다소 시간이 걸릴 수 있습니다. 미디어 레코더의 상태가 ' QMediaRecorder::StoppedState'로 변경되면 녹화가 완료된 것입니다.
© 2026 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.