FFmpeg 고급 구성
이 페이지에서는 FFmpeg 미디어 백엔드의 구성 가능한 기능들을 나열합니다. 모든 기능은 비공개 API의 일부이며, 향후 사전 공지 없이 변경되거나 제거될 수 있습니다. 환경 변수는 기본적으로 자식 프로세스에 상속되므로 의도하지 않은 결과를 초래할 수 있음을 유의하십시오.
FFmpeg 및 Qt FFmpeg 미디어 백엔드의 로깅 활성화
환경 변수를 통해 FFmpeg의 고급 로그 출력을 구성할 수 있습니다.
QT_FFMPEG_DEBUG=1FFmpeg 라이브러리에서 추가 로깅을 활성화하여 FFmpeg 라이브러리와 관련된 문제를 파악하는 데 도움이 될 수 있습니다.QT_LOGGING_RULES="*.ffmpeg.*=true"FFmpeg 플러그인에서 Qt 개발자 로그를 켭니다. FFmpeg 플러그인의 로깅 범주는 일반적으로 "qt.multimedia.ffmpeg.XXX"로 명명됩니다. Qt Multimedia 의 모든 항목에 대한 개발자 로그를 활성화하려면 다음을 설정하십시오.QT_LOGGING_RULES="*.multimedia.*=true"QT_FFMPEG_DEBUG와QT_LOGGING_RULES를 모두 설정하면, QMediaPlayer, QAudioDecoder 또는 QMediaRecorder 에서 인코딩 또는 디코딩 기능을 처음 사용할 때 사용 가능한 모든 FFmpeg 코덱이 출력됩니다. 이 정보는 Qt Multimedia 가 적절한 FFmpeg 디코더나 인코더를 찾지 못하는 상황을 파악하는 데 도움이 될 수 있습니다. 코덱과 관련된 문제가 발생할 경우, Qt 버그 보고서에 코덱 덤프 파일을 첨부하는 것을 권장합니다.
실험용 FFmpeg 코덱 활성화
FFmpeg은 Opus나 Vorbis와 같은 몇 가지 코덱을 실험용 코덱으로 제공합니다. 실험용 코덱은 표준을 엄격하게 따르지 않으며 불안정할 수 있습니다. 이러한 코덱은 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 환경 변수 QT_ENABLE_EXPERIMENTAL_CODECS=1 를 설정하십시오.
허용되는 네트워크 프로토콜 구성
보안상의 이유로 FFmpeg 라이브러리는 중첩 프로토콜(다른 프로토콜에서 사용되는 프로토콜)의 사용을 제한합니다. 자세한 내용은 FFmpeg 프로토콜 문서를 참조하십시오. 환경 변수 ` QT_FFMPEG_PROTOCOL_WHITELIST`을 통해 허용되는 프로토콜을 명시적으로 재정의할 수 있습니다. 예를 들면 다음과 같습니다.
export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp경고: 중첩 프로토콜은 신뢰할 수 없는 데이터와 함께 사용될 경우 보안 취약점을 유발할 수있습니다 . 보안 및 비즈니스 요구 사항에 부합하는 프로토콜만 허용하십시오.
RTSP 전송 구성
QT_FFMPEG_RTSP_TRANSPORT 환경 변수를 설정하여 특정 FFmpeg RTSP 하위 전송 프로토콜로 RTSP 입력 스트림을 열 수 있습니다. 이 값은 rtsp:// URL에 대해 FFmpeg의 rtsp_transport 입력 옵션으로 전달됩니다. 예를 들어, RTSP 제어 채널 내에서 TCP 인터리빙을 사용하려면 다음과 같이 설정하십시오:
export QT_FFMPEG_RTSP_TRANSPORT=tcp일반적인 값으로는 udp, tcp, udp_multicast, http, https 등이 있으며, 자세한 내용은 FFmpeg의 RTSP 프로토콜 문서를 참조하십시오. 이 옵션은 기본적으로 설정되어 있지 않으며, RTSP가 아닌 미디어 소스에서는 무시됩니다.
백엔드에서 하드웨어 가속 구성
- 명시적인 디코딩 및 인코딩 하드웨어 가속 백엔드.
FFmpeg 플러그인은 가용성, 안정성, 효율성 및 구현 세부 사항을 기반으로 디코딩 및 인코딩용 하드웨어 가속 백엔드를 선택합니다. 선택된 하드웨어 백엔드가 예상대로 작동하지 않는 경우, 사용자 정의 우선순위 목록을 설정하거나 환경 변수
QT_FFMPEG_DECODING_HW_DEVICE_TYPES및QT_FFMPEG_ENCODING_HW_DEVICE_TYPES을 통해 모든 하드웨어 백엔드를 비활성화해 볼 수 있습니다. 사용 가능한 하드웨어 백엔드는 다음과 같습니다:- cuda
- drm
- dxva2
- d3d11va
- d3d12va,
- OpenCL
- QSV
- VAAPI
- vdpau
- videotoolbox
- 미디어 코덱
- vulkan
그러나 하드웨어 백엔드의 사용 가능 여부는 OS, 설치된 드라이버, FFmpeg 버전 및 구성에 따라 달라집니다. 일부 장치 유형은 Qt 관리자가 Qt Multimedia 를 통해 테스트하지 않았으므로 의도한 대로 작동하지 않을 수 있다는 점을 유의해야 합니다. 이 문서를 작성하는 시점에서 이러한 백엔드에는 다음이 포함됩니다:
- drm
- opencl
- qsv
- vdpau
- Vulkan
예시:
# Set vdpau or cuda encoding hardware backends export QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=vdpau,cuda # Set only d3d12va decoding hardware backend export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=d3d12va # Disable decoding hw backends (set an empty list) export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=, - 하드웨어 텍스처 변환.
디코딩 및 렌더링된 비디오 프레임에 GPU 기반 변환을 활용하면 CPU 사용량을 크게 줄일 수 있습니다. 저희는 가능한 한 많은 하드웨어 백엔드에서 이 기능을 활용할 계획입니다. 렌더링 문제가 발생하면, 원인을 파악하기 위해 GPU 텍스처 변환을 사용하지 않고 렌더링을 테스트해 보시기 바랍니다. `
QT_DISABLE_HW_TEXTURES_CONVERSION` 환경 변수를 사용하여 GPU 텍스처 변환을 비활성화할 수 있습니다:QT_DISABLE_HW_TEXTURES_CONVERSION=1. `VAAPI` 하드웨어 백엔드의 경우, 하드웨어 텍스처 변환은 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 `QT_XCB_GL_INTEGRATION=xcb_egl`를 설정하십시오. - 코덱 프로필 불일치 허용.
코덱 프로파일이 하드웨어의 보고된 기능과 일치하지 않는 경우,
QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1를 통해 불일치를 무시하고 하드웨어 디코딩을 허용할 수 있습니다. 예를 들어,VAAPI하드웨어 백엔드를 사용하여 베이스라인 프로파일 H.264에 대한 하드웨어 가속 디코딩을 적용할 때 이 옵션을 설정하면 도움이 될 수 있습니다. 이러한 스트림의 대부분은 기존 H.264 하드웨어 디코더의 제약 조건을 충족하기 때문입니다.경고: 스트림이 지원되지 않는경우 , 강제된 하드웨어 디코딩으로 인해 완전히 잘못된 비디오 출력이 발생할 수 있습니다.
© 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.