Go to file
RyuJongJin 968d62979c 프로그램 정보에 버전 · [최신 버전 확인], 결과는 버튼 옆에 (164)
환경 설정 > 프로그램 정보 맨 위에 "JJ_MKVMaker v<지금>" 과 [최신 버전 확인]. 결과 (최신 · 새 버전 · 확인 못 함) 는 알림이 아니라
버튼 옆에, 확인하는 동안 도는 표시. 업데이트 묶음의 버튼도 같은 위젯 (UpdateCheckButton). 새 버전이면 안내 창은 예전처럼.
checkForUpdate 에 onResult. update_ui_test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 04:06:06 +09:00
android Android 업데이트: 설치가 허용돼 있는데 "설치 허용 필요" 창이 뜨던 것 (170) 2026-10-10 03:30:29 +09:00
assets 프로그램 정보에 버전 · [최신 버전 확인], 결과는 버튼 옆에 (164) 2026-10-10 04:06:06 +09:00
integration_test [MKV 만들기] 와 AI 버튼 구별 · AI 작업 전에 계획 보이기 (138) 2026-10-10 03:12:14 +09:00
lib 프로그램 정보에 버전 · [최신 버전 확인], 결과는 버튼 옆에 (164) 2026-10-10 04:06:06 +09:00
packages 웹 브라우저: 페이지 자동 번역 · JavaScript 끄기 (환경 설정 > 웹 브라우저) 2026-10-05 01:58:53 +09:00
test 프로그램 정보에 버전 · [최신 버전 확인], 결과는 버튼 옆에 (164) 2026-10-10 04:06:06 +09:00
test_assets JJ_MKVMaker v1.0.0 2026-09-30 19:35:19 +09:00
test_driver JJ_MKVMaker v1.0.0 2026-09-30 19:35:19 +09:00
tool 화면 글자 검사기가 놓치던 것 잡기 · 찾은 번역 빠짐 고치기 (60) 2026-10-10 01:39:33 +09:00
windows 라이선스 원문 (175): 네이티브 구성 요소 · 받는 AI 모델의 저작권 줄과 허가 문구를 그 판 그대로 2026-10-10 00:29:19 +09:00
.gitignore whisper_ggml 사본: 분석에서 build · 플랫폼 폴더 제외, 플러그인 사본의 pubspec.lock 무시 2026-10-02 21:57:44 +09:00
.metadata JJ_MKVMaker v1.0.0 2026-09-30 19:35:19 +09:00
LICENSE JJ_MKVMaker v1.0.0 2026-09-30 19:35:19 +09:00
README.md 라이선스 고지 (62 · 63 · 64) · AI 릴리스 전 수정 (152 · 156 · 157 · 159) 2026-10-09 16:20:15 +09:00
analysis_options.yaml Android 판 (APK): FFmpeg (ffmpeg-kit) 로 MKV 만들기, 앱 안 파일 고르기, 저장소 접근 권한, Windows 전용 설정 숨김 2026-10-02 12:46:08 +09:00
pubspec.lock Flutter 기본 글을 화면 언어로 (140 · 158): 뒤로 · 라이선스 화면 · 복사 · 붙여넣기 메뉴 등 2026-10-09 23:54:24 +09:00
pubspec.yaml Flutter 기본 글을 화면 언어로 (140 · 158): 뒤로 · 라이선스 화면 · 복사 · 붙여넣기 메뉴 등 2026-10-09 23:54:24 +09:00

README.md

JJ_MKVMaker

JJ_MKVMaker

동영상에 자막을 넣어 MKV 로 만들고, 자막을 편집 · AI 로 생성 · 번역하고, 동영상을 재생하는 무료 Windows 프로그램입니다. (Android 이식 예정)

  • 모든 AI 처리(음성인식 · 번역)는 내 PC 안에서 이루어집니다. 영상이나 자막을 외부로 보내지 않습니다.
  • 설치 없이 폴더째 실행합니다. 필요한 프로그램이 없으면 처음 실행할 때 물어보고 받아 줍니다.
  • 무료 · 오픈 소스 (MIT) · 광고 없음

주요 기능

기능 내용
MKV 만들기 동영상 + 자막(여러 언어) → jj_mkv\동일파일명.mkv. 같은 폴더의 자막 자동 추가, 내장 자막 삭제·수정, 언어 태그
인코딩 원본 유지(재인코딩 없음) 또는 H.264 · H.265 · VP9 · AV1 · MPEG-4, 720p ~ 8K, 화질 3단계
자막 편집 SRT · SMI · ASS · VTT · 내장 자막 편집, 문자셋 변환(UTF-8 · CP949 · Shift-JIS · GBK · UTF-16)
싱크 맞추기 영상을 보면서 편집, 타임라인에서 끌어서 이동·길이 조절, "선택 줄부터 여기로 맞추기"
AI 자막 Whisper 음성인식 → 파일명_AI.srt, NLLB 번역 → 파일명_ko.srt · _en · _ja … (200개 언어)
자막 번역 이미 있는 자막(예: 영어)을 원하는 언어로 번역해 MKV 에 추가. 인터넷에서 받은 자막도 한국어로 함께 번역
인터넷 자막 찾기 OpenSubtitles.com 검색 (영상 해시로 "이 파일용" 자막 우선)
동영상 플레이어 재생 목록, 전체 화면, 팝업(항상 위), 원본의 0.5·1·2·4배, 자막·음성 트랙 선택, 속도
탐색기 연결 오른쪽 클릭 "JJ_MKVMaker 로 재생" / "JJ_MKVMaker 로 자막 만들기", 끌어다 놓기. 더블클릭(연결 프로그램)으로 열면 바로 재생 또는 목록에 추가, 켜져 있는 창 / 새 창 (환경 설정)
창 · 종료 창 위치 · 동영상 목록 기억, 여러 창의 목록 자동 맞춤. 종료(✕)를 누르면 백그라운드로 계속 / 모두 종료 / 매번 고르기 (환경 설정). 완전 종료는 트레이 아이콘 > 종료
다운로드 Ctrl+C 로 복사한 YouTube 주소 → yt-dlp, 마그넷 · .torrent → aria2 (백그라운드, 트레이). 다 받은 영상은 편집 목록에 자동 추가
웹 브라우저 앱 안 브라우저(Edge WebView2)로 보다가 [다운로드], 즐겨찾기(Chrome · Edge · Whale 에서 가져오기), 로그인 쿠키를 yt-dlp 와 공유, 다른 언어 페이지를 화면 언어로 자동 번역 (Google 번역), JavaScript 끄기
작업 대기열 · 화면 분할 AI 자막 · 번역 · MKV 만들기를 차례로 백그라운드 실행, 브라우저 옆 [작업 현황] 에서 진행 확인
일괄 작업 동영상 목록에서 여러 개를 체크(전체 선택 · 이름/날짜 정렬) → [자막 만들기] · [자막 만들기 & MKV 만들기] · [선택한 파일 재생] · [MKV 만들기]
상태 표시 · 화면 크기 모든 화면 오른쪽 위에 CPU · MEM · 다운로드 디스크 남은 용량, 화면 크기 [−] 100% [+], 환경 설정 · 종료 버튼
끌어다 놓기 · 오른쪽 클릭 어느 화면에서든 동영상 · 폴더를 놓으면 목록에 추가. 목록에서 오른쪽 클릭: 폴더 열기 · 재생 · 자막 만들기 · 자막 찾기 · 삭제

실행

  1. Releases 에서 JJ_MKVMaker_v*_win64.zip 을 받아 원하는 폴더에 풉니다.
  2. jj_mkvmaker.exe 를 실행합니다. (Windows 10/11 64비트)
  3. 폴더 전체가 프로그램입니다. 맨 위의 jj_mkvmaker.exe 는 Lib\ 안의 프로그램을 실행하는 시작 프로그램이고, 작업 기록은 Logs\ 에 남습니다. exe 파일 하나만 옮기면 동작하지 않습니다.

처음 쓸 때 내려받는 것 (한 번만):

항목 크기 언제
Whisper base / small 음성인식 모델 148MB / 488MB 처음 "AI 자막 만들기" 할 때
NLLB-200 번역 모델 약 910MB 처음 번역할 때

모델은 프로그램 폴더의 models\ 에 저장됩니다. (환경 변수 JJ_MKVMAKER_MODELS 로 위치 변경 가능)

인터넷 자막 찾기 (선택)

OpenSubtitles 의 무료 API 키가 필요합니다.

  1. opensubtitles.com 가입
  2. 프로필 → API consumers → New consumer 에서 키 만들기
  3. 프로그램의 환경 설정 → 인터넷 자막 에 키 입력 (아이디·비밀번호는 선택, 넣으면 하루 받기 횟수가 늘어남)

단축키

화면 단축키
플레이어 Space 재생/정지 · ←/→ 10초 · Shift+←/→ 1분 · ↑/↓ 음량 · F 전체 화면 · Esc 나가기 · N/P 다음/이전 · M 음소거 · S 자막 · L 재생 목록
자막 편집 Ctrl+Space 재생/정지 · Alt+←/→ 1초 · Alt+Shift+←/→ 0.1초 · F7 새 줄 · F8 선택 줄 재생 · F9 시작=현재 · F10 끝=현재
브라우저 Ctrl+L 주소창 · F5 새로고침 · Alt+←/→ 뒤로/앞으로 · Ctrl+D 즐겨찾기 · Ctrl+Shift+B 즐겨찾기 관리 · Ctrl+Shift+J 작업 현황
어디서나 Ctrl+Shift+X 창 보이기 / 트레이로 숨기기 (환경 설정에서 변경)

버전

년.월.일_순번 (예: 2026.09.30_001). 같은 날 다시 내면 순번이 늘고, 날이 바뀌면 001 부터 다시 시작합니다. 번호 올리기: powershell -File tool\next_version.ps1 (pubspec.yaml 에는 Flutter 형식 2026.9.30+1 로 적힙니다)

소스에서 빌드

필요: Flutter 3.47+, Visual Studio 2022 Build Tools (C++ 데스크톱), Windows 개발자 모드, PATH 에 nuget.exe (앱 안 브라우저 WebView2 빌드용)

git clone <이 저장소>
cd app
powershell -File tool\fetch_ffmpeg.ps1   # third_party\ffmpeg\windows 에 FFmpeg 준비
powershell -File tool\fetch_tools.ps1    # third_party\tools\windows 에 yt-dlp · aria2 · Deno 준비
powershell -File tool\fetch_rsync.ps1    # third_party\rsync\windows 에 rsync (MSYS2, SHA256 고정) 준비
flutter pub get
flutter build windows --release          # build\windows\x64\runner\Release

Android 의 rsync: Git Bash 에서 sh tool/build_rsync_android.sh (Android NDK 로 rsync 3.4.1 소스를 빌드해 third_party/rsync/android 에 둠, APK 에 들어감)

테스트: flutter test (AI 모델 · 인터넷이 필요한 테스트는 자동으로 건너뜀)

구조

lib/
 ├─ core/       자막 · 문자셋 · FFmpeg 명령 · 재생 목록 규칙 등 순수 로직 (플랫폼 무관)
 ├─ app/        화면 상태 · 설정 · 다운로드 관리
 ├─ ui/         화면 (어두운 테마)
 ├─ services/   플랫폼 경계 (인터페이스)
 └─ platform/
     ├─ common/   Windows · Android 공용 구현 (mpv 플레이어, Whisper, NLLB, OpenSubtitles)
     └─ windows/  Windows 전용 (FFmpeg 프로세스, 트레이, 단축키, 탐색기 메뉴, yt-dlp, aria2)
packages/whisper_ggml/   Windows 힙 손상 버그를 고친 whisper_ggml 사본 (JJ_PATCH.md)

Android 이식 시 platform/android/ 구현과 services/platform_services.dart 분기만 추가하면 됩니다.

라이선스

  • JJ_MKVMaker 소스 코드: MIT
  • 포함 · 사용하는 구성 요소: THIRD_PARTY_NOTICES.txt (라이선스 원문: assets/licenses)
    • FFmpeg · yt-dlp 실행 파일 · rsync (GPLv3+) · aria2 (GPLv2+) 는 수정하지 않은 별도 실행 파일로 함께 제공
    • libmpv (LGPL), PDFium (BSD), whisper.cpp · ONNX Runtime · stable-diffusion.cpp (MIT), Deno (MIT)
    • Android 판은 GPLv3 구성 요소 (FFmpegKit · youtubedl-android · rsync) 를 포함하며, 대응 소스는 같은 판 번호의 태그 (예: v1.2.3) 입니다.
    • NLLB-200 번역 모델은 CC-BY-NC 4.0 (비상업적 이용만) — 이 프로그램은 무료 배포이며, 모델은 사용자가 직접 내려받습니다

주의

  • YouTube 등에서 받은 영상, 토렌트로 받은 파일, 인터넷에서 받은 자막의 저작권 책임은 이용자에게 있습니다. 권리가 있는 콘텐츠만 받으세요. YouTube 이용 약관도 확인하세요.
  • 토렌트는 받는 동안 다른 사용자에게 조각을 올려 줍니다. 받기가 끝나면 올려 주기(시딩)는 바로 멈춥니다.
  • "CapCut", "MakeMKV", "VLC" 는 각 소유자의 상표이며 이 프로그램과 관계가 없습니다.