HDR to SDR Movie Converter 로고 HDR to SDR Movie Converter
FFmpeg · libplacebo/Vulkan · HandBrakeCLI

어떤 화면이든 HDR 화면으로 바꿔보세요. 할머니도 쓸 수 있을 만큼 간단합니다.

FFmpeg와 HandBrake를 지원하고, 다양한 커브와 GPU에서의 진짜 BT.2390을 제공하는 데스크톱 톤 매핑 도구입니다. 10비트 및 12비트 출력도 무료로 제공됩니다.

HDR to SDR Movie Converter 앱 창: 왼쪽에 파일, 소스 분석, 진행 상황 및 제어, 오른쪽에 변환 설정이 표시됩니다.
중요한 이유

같은 소스, 다른 결과

영화가 실제로 어떻게 보이는지는 전적으로 처리 방식에 달려 있습니다 — 전혀 변환하지 않거나, 미디어 플레이어 자체의 빠른 추정치를 쓰거나, 진짜 BT.2390 처리를 거치거나.

HDR를 지원하지 않는 디스플레이에서 재생된 원본 HDR 영상 — 흐릿하고 평면적이며 대비가 낮은 화면.
변환 없음

원본 HDR, 변환 없음

HDR를 이해하지 못하는 디스플레이나 프로젝터에서 손대지 않은 HDR 파일을 재생하면 — PQ/HLG 커브가 마치 SDR인 것처럼 표시되어 화면 전체가 회색빛에 평면적이고 흐릿하게 보입니다.

VLC 같은 미디어 플레이어가 자동으로 톤 매핑한 동일한 HDR 영상 — 하이라이트가 뭉개지고 색이 틀어져 있습니다.
자동 톤 매핑

미디어 플레이어의 자동 변환

VLC 같은 플레이어는 재생을 최소한 볼 만하게 만들기 위해 자체적인 빠른 톤 매핑을 적용합니다 — 대개 사용자가 직접 선택한 커브로 의도적으로 처리한 BT.2390이 아니라, 하이라이트를 잘라내거나 색을 틀어지게 하는 투박한 고정 커브입니다.

이 앱의 BT.2390 GPU 톤 매핑으로 SDR로 올바르게 변환된 동일한 HDR 영상 — 균형 잡힌 하이라이트와 정확한 색상.
진짜 BT.2390

제대로 된 BT.2390 톤 매핑

libplacebo를 통해 GPU에서 실행되는 진짜 ITU-R BT.2390 EETF — 제어된 하이라이트 롤오프와 정확한 색상으로, 어떤 표준 디스플레이에서도 재생 가능한 진짜 SDR 파일로 출력됩니다.

백엔드

세 가지 톤 매핑 방식. 하드웨어에 맞는 것을 선택하세요.

같은 소스 영상에 대해 진짜로 서로 다른 세 가지 파이프라인이 있습니다. "자동" 버튼 뒤에 아무것도 숨겨져 있지 않습니다 — 선택한 백엔드와 커브가 그대로 실행됩니다.

CPU · 표준

표준 FFmpeg

고전적인 tonemap 필터. 빠르고, FFmpeg가 동작하는 모든 곳에서 작동하며, GPU가 필요 없습니다.

  • Hable, Reinhard, Mobius 커브
  • 프로 모드에서는 Linear, Gamma, Clip, 그리고 직접 "None" 패스를 추가로 제공
GPU · Vulkan

libplacebo / BT.2390

libplacebo를 통해 GPU에서 진짜 ITU-R BT.2390 EETF를 실행합니다 — 대부분의 HDR-투-SDR 등급 조정이 기준으로 삼는 것과 동일한 커브입니다.

  • 기본값은 BT.2390
  • 프로 모드에서 BT.2446A, ST2094-10, ST2094-40(HDR10+), Auto를 잠금 해제
선택 사항

HandBrakeCLI

특정 소스에서 자체 파이프라인이 더 잘 동작하는 경우를 위한 HandBrakeCLI를 통한 대체 인코딩 경로입니다.

  • 동일한 해상도/인코더 제어
  • 자체 진행 상황 분석을 "활동" 탭에서 실시간으로 표시
기능

제대로 된 변환에 필요한 모든 것 — 정확하게.

실제 영상에서 톤 매핑 작업이 정말로 잘못될 수 있는 부분들 — 잘못된 커브, 잘못된 인코더, 실행 중에 컴퓨터 전체를 독차지하는 프로세스 — 을 중심으로 설계되었습니다.

해상도 프리셋

Source(스케일링 없음), 4K, 1440p, 1080p, 720p, 480p. 스케일링은 높이를 기준으로 하며, 너비는 자동으로 계산되어 소스의 화면 비율이 절대 왜곡되지 않습니다.

자동 분석

소스를 선택하면 즉시 읽힙니다 — 전송 특성, 비트 심도, 재생 시간, HDR10+/Dolby Vision 메타데이터 — 그리고 해당 파일에 맞는 커브가 제안됩니다. SDR 출력 경로도 자동으로 채워지며, 동영상 파일을 창 어디에나 끌어다 놓는 것은 "찾아보기"와 동일하게 작동합니다.

실시간 미리보기

설정을 변경할 때마다 업데이트되는, 소스에서 실제로 디코딩되고 톤 매핑된 프레임입니다. 섀도우/하이라이트 클리핑 검사가 함께 제공되어, 디테일을 뭉개는 커브를 전체 인코딩 전에 발견할 수 있습니다. 전체 크기로 보거나 프레임을 바로 디스크에 저장할 수 있습니다.

실시간 비트레이트 추정

화질, 해상도, 인코더가 바뀔 때마다 자동으로 업데이트되어, 뜻밖의 CRF/해상도 조합을 "시작"을 누르기 전에 확인할 수 있습니다.

커브 툴팁

어떤 톤 매핑 커브 위에든 마우스를 올리면 실제 트레이드오프를 쉬운 말로 설명해줍니다 — 마케팅 문구가 아닙니다.

인코더 선택

CPU에서 x264/x265, 또는 NVIDIA NVENC, AMD AMF, Apple VideoToolbox를 통한 하드웨어 인코딩(H.264 또는 H.265).

10비트 및 12비트 출력

무료이며 라이선스가 필요 없고 별도 빌드도 필요 없습니다. 10비트는 모든 H.265 인코더(CPU 또는 하드웨어)에서 동작하고, 12비트는 CPU의 libx265를 통해 제공됩니다 — 앱은 선택한 비트 심도를 실제로 지원하는 인코더만 표시합니다.

프로 모드

전체 CRF/CQ 범위(0–51), 밝기 오프셋 조절, 추가 톤 매핑 커브를 엽니다 — 필요할 때까지는 눈에 띄지 않습니다.

하드웨어 가속 디코딩

FFmpeg 백엔드용 CUDA / DXVA2 / VideoToolbox 디코딩으로, GPU가 읽기와 톤 매핑을 모두 처리합니다.

프로세스 우선순위 및 CPU 코어

Efficiency, Balanced, 또는 Performance, 그리고 실시간 CPU 코어 제한 — 둘 다 시작 시 적용되며 변환이 실행되는 동안에도 조정할 수 있어, 긴 작업 배치가 컴퓨터의 나머지 작업을 막지 않습니다.

활동 및 시스템

접었다 펼 수 있는 실시간 로그가 실제 FFmpeg/HandBrake 출력과 진행 상황을 스트리밍하며, 시스템 패널은 변환을 시작하기 전에 컴퓨터에서 감지된 항목 — FFmpeg, Vulkan, HandBrakeCLI — 을 보고합니다.

Windows에서 원클릭 설정

누락된 FFmpeg나 HandBrakeCLI는 앱 안에서 winget을 통해 설치할 수 있습니다 — 시스템 패널에서, 또는 바로 옆에 있는 "빠른 설치" 바로가기를 통해서도 가능하며, 설치 출력은 "활동"에 실시간으로 표시됩니다.

HDR to SDR Movie Converter 아이콘
다운로드

앱 받기

그냥 실행만 하고 싶다면 Windows 빌드를, macOS/Linux를 사용하거나 코드를 먼저 보고 싶다면 소스 코드를 받으세요.

Windows

Windows (.exe)

단일 파일 빌드로 Python이 필요 없습니다. FFmpeg는 여전히 별도로 필요합니다 — 또는 앱 내에서 winget을 통해 설치하세요.

항상 최신 릴리스 · Windows 10/11

소스

소스 코드

Python 3.10 이상과 pip install -r requirements.txt가 필요합니다. Windows, macOS, Linux에서 실행됩니다.

MIT 라이선스 · main 브랜치

문서

설치 및 사용 가이드

이 앱은 단일 PySide6 스크립트입니다. 설치 프로그램도, 백그라운드 서비스도 없습니다 — 실행하면 FFmpeg(및 선택적으로 HandBrakeCLI)를 직접 호출합니다.

요구 사항

실행하기 전에 컴퓨터에 있어야 하는 것들.

구성 요소필요한 이유
Python 3.10+앱 자체 실행
PySide6Qt 기반 UI
FFmpeg표준 및 GPU 톤 매핑 백엔드
Vulkan을 지원하는 GPU + 드라이버특히 libplacebo/BT.2390 백엔드
HandBrakeCLI (선택 사항)HandBrake 백엔드
psutil (선택 사항)실시간 일시정지/재개, CPU 코어 제어, CPU/GPU 리소스 통계

설치 및 실행

세 개의 명령어만 실행하면 바로 창을 볼 수 있습니다.

# 1. 스크립트와 Python 의존성 가져오기
pip install PySide6 psutil

# 2. FFmpeg가 PATH에 있는지 확인
ffmpeg -version

# 3. 실행
python hdr_to_sdr_gui_qt.py
Windows: FFmpeg나 HandBrakeCLI를 찾을 수 없다면, 수동으로 설치하는 대신 시스템 패널을 열고 "누락된 항목 설치 (winget)"를 사용하세요.

기본 작업 흐름

HDR 소스 파일에서 SDR 출력까지.

  1. 소스 파일을 선택하세요. FFmpeg가 읽을 수 있는 모든 HDR 컨테이너 — 전송 함수, 비트 심도, HDR10+/Dolby Vision 메타데이터, 제안된 커브를 포함한 분석이 자동으로 실행되며, SDR 출력 경로도 자동으로 채워집니다. 창에 파일을 끌어다 놓는 것은 "찾아보기"와 동일하게 작동합니다.
  2. 백엔드와 커브를 선택하세요. GPU에서의 BT.2390이 합리적인 기본값입니다. Vulkan을 지원하는 GPU가 없다면 표준 FFmpeg로 전환하세요. 어떤 커브든 마우스를 올리면 실제 트레이드오프를 확인할 수 있습니다.
  3. 해상도, 인코더, 비트 심도를 설정하세요. 원본 프레임 크기와 화면 비율을 유지하려면 해상도를 "Source"로 두거나, 같은 과정에서 다운스케일하려면 프리셋을 선택하세요.
  4. 화질을 조정하거나 프로 모드를 활성화하세요 전체 CRF/CQ 범위와 밝기 오프셋을 사용할 수 있습니다. 확정하기 전에 실시간 미리보기를 확인하세요 — 실제로 톤 매핑된 프레임을 보여주고 섀도우/하이라이트 클리핑을 표시하며, 실시간 비트레이트 추정치도 확인할 수 있습니다.
  5. 변환하세요. "활동"에서 진행 상황과 실시간 FFmpeg/HandBrake 출력을 확인할 수 있습니다. 일시정지/재개, CPU 코어 제한, 프로세스 우선순위는 실행 중에도 모두 조정할 수 있습니다.

커브 선택하기

여기 있는 모든 항목은 실제로 존재하고 문서화된 FFmpeg/libplacebo 톤 매핑 옵션입니다 — 지어낸 것은 하나도 없습니다.

커브백엔드사용해야 할 때
BT.2390GPU기본 선택 — 대부분의 HDR-투-SDR 등급 조정이 목표로 삼는 기준 EETF
HableCPU필름 같은 롤오프, GPU 불필요
Reinhard / MobiusCPUHable보다 부드러운 하이라이트 롤오프 대안
BT.2446AGPU · ProBT.2390에 대한 방송 지향 대안
ST2094-10 / ST2094-40GPU · Pro동적 톤 매핑; ST2094-40은 존재할 경우 HDR10+ 메타데이터를 사용
Linear / Gamma / Clip / NoneCPU · Pro진단용 또는 수동 등급 조정용 패스로, 일반적인 용도가 아닙니다

문제 해결

시스템 패널이 첫 번째로 확인할 곳입니다 — 이것을 버그로 신고하기 전에 정확히 무엇이 감지되었는지 알려줍니다.

  • BT.2390(GPU) 옵션이 회색으로 비활성화됨 — Vulkan을 지원하는 장치가 감지되지 않았습니다. 대신 표준 FFmpeg 커브를 사용하세요.
  • HandBrakeCLI 백엔드가 보이지 않음 — 이 백엔드는 선택 사항이며 PATH에서 HandBrakeCLI를 찾은 경우에만 나타납니다.
  • 변환이 컴퓨터 전체를 독차지하는 것 같음 — 프로세스 우선순위를 Efficiency로 낮추세요.