# Picklary DualCam Lite 1.0.3

두 영상의 시작 지점을 맞춰 상하 또는 좌우로 빠르게 합치는 전용 Windows 프로그램입니다.

## 기능

1. 영상 A와 B 불러오기
2. 각 영상의 시작 지점 설정
   - 미리보기에서 현재 위치 사용
   - `90.5`, `01:30.500`, `00:01:30.500` 형식으로 직접 입력
   - 각 화면의 `+1초`, `+3초` 버튼으로 개별 조정
3. 키보드 동시 제어
   - `Space`: 로드된 두 영상 동시 재생/정지
   - `←`: 두 영상 모두 3초 뒤로 이동
   - `→`: 두 영상 모두 3초 앞으로 이동
   - 시작 지점 입력칸을 편집 중일 때는 단축키가 실행되지 않습니다.
4. 화면 배치
   - 상하 1개 파일 — 기본
   - 좌우 1개 파일
   - 상하와 좌우를 각각 1개씩 생성
5. 화질 선택
   - FHD
   - 4K
6. 결과 저장 폴더 직접 선택 및 기존 출력 자동 보존
7. GPU 우선 1회 렌더와 GPU 진단

점수판, 랠리 편집, AI 분석, Shot Tracker, DUPR, 오버레이와 프로젝트 관리 기능은 포함하지 않았습니다.

## RTX 4070 Ti Super인데 CPU 모드가 되는 이유

이 프로그램은 그래픽카드 이름만 보고 GPU 모드로 표시하지 않습니다. 현재 선택된 FFmpeg에서 `h264_nvenc` 시험 인코딩이 실제로 성공해야 GPU 모드가 됩니다.

CPU 모드가 되는 대표적인 경우는 다음과 같습니다.

- 과거에 선택해 저장한 FFmpeg가 NVENC를 포함하지 않은 CPU 전용 빌드인 경우
- FFmpeg에 `h264_nvenc`가 있지만 NVIDIA 드라이버 런타임을 불러오지 못하는 경우
- FFmpeg와 드라이버 조합에서 기존 시험 인코딩 옵션이 호환되지 않는 경우
- NVIDIA 드라이버 설치 후 Windows를 재시작하지 않은 경우

1.0.2에서는 다음을 수정했습니다.

- 저장된 CPU 전용 FFmpeg보다 NVENC 시험에 성공하는 FFmpeg를 우선 선택
- NVENC 시험을 최소 호환 옵션으로 변경
- NVIDIA GPU 이름과 드라이버 버전을 `nvidia-smi`로 확인
- `GPU 다시 검사`, `GPU 진단`, `FFmpeg 변경` 버튼 추가
- CPU 모드가 된 구체적인 이유와 실제 FFmpeg 경로 표시

프로그램 상단의 `GPU 진단`을 누르면 다음 정보를 확인할 수 있습니다.

- 감지된 그래픽카드 이름
- NVIDIA 드라이버 버전
- 사용 중인 FFmpeg 경로와 버전
- `h264_nvenc` 포함 여부
- NVENC 시험 인코딩 성공 또는 실패 사유

별도 창에서 확인하려면 `gpu_diagnostic_windows.bat`을 실행합니다. 결과는 프로그램 폴더의 `Picklary_GPU_Diagnostic.txt`에도 저장됩니다.

## 실행

1. ZIP을 새 폴더에 완전히 압축 해제합니다.
2. `run_windows.bat`을 실행합니다.
3. 최초 실행 시 Python과 PySide6 설치로 몇 분이 걸릴 수 있습니다.
4. FFmpeg가 검색되지 않거나 NVENC가 없는 빌드라면 `install_ffmpeg_windows.bat`을 실행합니다.
5. 프로그램에서 `GPU 다시 검사`를 누릅니다.

## 사용 순서

1. A에 뒤쪽 고정카메라 영상을 불러옵니다.
2. B에 POV 영상을 불러옵니다.
3. 두 영상에서 서브, 공 바운드, 박수처럼 동일한 순간을 찾습니다.
4. 개별 버튼 또는 키보드 `←/→`로 위치를 맞춥니다.
5. `현재 위치 사용`을 누르거나 시작 지점을 직접 입력한 뒤 `입력 적용`을 누릅니다.
6. 상하·좌우·둘 다 생성과 FHD·4K를 선택합니다.
7. `저장 폴더 선택`에서 결과물을 저장할 위치를 지정합니다.
8. 화면에 표시된 실제 처리 장치를 확인하고 합성 버튼을 누릅니다.

결과는 사용자가 선택한 폴더에 저장됩니다. 마지막으로 선택한 폴더는 다음 실행에도 유지됩니다. 두 영상 중 시작점 뒤의 남은 길이가 짧은 쪽에서 결과가 끝납니다. 오디오는 A 영상을 우선 사용하고 A에 오디오가 없으면 B 오디오를 사용합니다.

## 속도 설계

- 중간 영상 파일을 만들지 않는 FFmpeg 1회 렌더
- NVIDIA NVENC → Intel Quick Sync → AMD AMF 순서로 실제 시험 인코딩 후 사용
- GPU 디코딩 실패 시 GPU 인코딩을 유지한 채 호환 디코딩으로 재시도
- GPU 인코딩 실패 시 CPU `ultrafast` 안전 모드 자동 전환
- `fast_bilinear` 스케일링과 30fps 단일 출력

FHD가 가장 빠릅니다. 4K는 처리해야 할 픽셀이 FHD의 약 4배이므로 최종본에서만 사용하는 것을 권장합니다.


## 기존 출력 자동 보존

출력 파일명에는 실행 시각이 자동으로 붙습니다. 같은 설정으로 여러 번 합성해도 기존 파일은 삭제하거나 덮어쓰지 않습니다.

예시:

```text
dualcam_Vertical_fhd_20260719_011530.mp4
dualcam_Vertical_fhd_20260719_011702.mp4
```

같은 초에 작업이 두 번 시작되면 `_02`, `_03`과 같은 번호가 자동으로 붙습니다. 상하·좌우를 함께 생성할 때는 두 결과가 같은 작업 시각을 공유하므로 한 세트로 쉽게 구분할 수 있습니다. 각 작업의 JSON 기록 파일도 같은 이름으로 별도 보존됩니다.


## 통합 v0.6.1 파일명 규칙
- 상하 합성: `dualcam_Vertical_화질_날짜시간.mp4`
- 좌우 합성: `dualcam_Horizontal_화질_날짜시간.mp4`


## DualCam 1.0.4 드래그앤드롭
- A 카드에 드래그: A 영상 교체
- B 카드에 드래그: B 영상 교체
- 이미 불러온 영상이 있어도 나중에 드래그한 파일이 즉시 적용
- 한 카드에 여러 파일을 드래그하면 마지막 유효 영상 사용
