고급 FFmpeg 구성

이 페이지에는 FFmpeg 미디어 백엔드에서 구성할 수 있는 기능이 나열되어 있습니다. 모든 기능은 비공개 API의 일부이며 나중에 확인 없이 변경하거나 제거할 수 있습니다. 환경 변수는 기본적으로 하위 프로세스에서 상속되며 의도하지 않은 결과를 초래할 수 있다는 점에 유의하세요.

FFmpeg 및 Qt FFmpeg 미디어 백엔드에서 로깅 활성화하기

환경 변수를 통해 고급 FFmpeg 로그 출력을 구성할 수 있습니다.

  • QT_FFMPEG_DEBUG=1 FFmpeg 라이브러리에서 추가 로깅을 활성화하고 FFmpeg 라이브러리와 관련된 문제를 이해하는 데 도움이 될 수 있습니다.
  • QT_LOGGING_RULES="*.ffmpeg.*=true" FFmpeg 플러그인에서 Qt 개발자 로그를 켭니다. FFmpeg 플러그인의 로깅 카테고리는 일반적으로 "qt.multimedia.ffmpeg.XXX"라고 불립니다. Qt Multimedia 에서 개발자 로그를 모두 사용하려면 다음을 설정합니다. QT_LOGGING_RULES="*.multimedia.*=true"
  • QT_FFMPEG_DEBUGQT_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

경고: 중첩된 프로토콜은 신뢰할 수 없는 데이터와 함께 사용할 경우 보안 취약성을 초래할 수 있습니다. 보안 및 비즈니스 요구사항에 부합하는 프로토콜만 허용하세요.

백엔드에서 하드웨어 가속 구성

  • 명시적 디코딩 및 인코딩 하드웨어 가속 백엔드.

    FFmpeg 플러그인은 가용성, 안정성, 효율성 및 구현 세부사항을 기준으로 디코딩 및 인코딩을 위한 하드웨어 가속 백엔드를 선택합니다. 선택한 하드웨어 백엔드가 예상대로 작동하지 않으면 사용자 정의 우선순위 목록을 설정하거나 환경 변수 QT_FFMPEG_DECODING_HW_DEVICE_TYPESQT_FFMPEG_ENCODING_HW_DEVICE_TYPES 을 통해 모든 하드웨어 백엔드를 비활성화할 수 있습니다. 사용 가능한 하드웨어 백엔드는 다음과 같습니다:

    • cuda
    • drm
    • dxva2
    • d3d11va
    • d3d12va,
    • opencl
    • qsv
    • vaapi
    • vdpau
    • 비디오 툴박스
    • 미디어코덱
    • 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 하드웨어 디코더의 제약 조건을 충족하므로 이 옵션을 설정하는 것이 유용할 수 있습니다.

    경고: 스트림이 지원되지 않는 경우 하드웨어 디코딩을 적용하면 완전히 잘못된 동영상 출력이 발생할 수 있습니다.

© 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.