-
released this
2026-05-16 22:57:52 +09:00 | 10 commits to main since this release일반 다운로드 완료 경로의 publish race 닫기 + 헬퍼 추출.
- v0.4.20 까지: 재인덱싱 분기는 post-put 검사를 추가했으나 일반 다운로드 완료 경로는 post-move 검사 후 그냥
READY.put→ 그 사이 clear 가 들어오면 stale 엔트리/완료 채팅. - 수정:
publishIfNotCancelled(url, path, startEpoch)헬퍼 추출 (pre-check → put → post-check → rollback). 양쪽 publish 사이트 (재인덱싱 + 다운로드 완료) 모두 이 헬퍼 경유. - 구조적 이점: 향후 추가될 publish 지점에서 post-check 빼먹기 어려움.
리뷰어 지적 반영.
Downloads
- v0.4.20 까지: 재인덱싱 분기는 post-put 검사를 추가했으나 일반 다운로드 완료 경로는 post-move 검사 후 그냥
-
released this
2026-05-16 22:54:20 +09:00 | 11 commits to main since this release재인덱싱 경로의 publish race 닫기 + preload 가드 강화.
- 기존 캐시 재인덱싱 분기는 epoch 1회만 검사 후
READY.put→ clear 가 그 사이에 들어오면 stale 엔트리 부활. v0.4.19 의 post-move 패턴을 동일하게 적용: pre-check → put → post-check + rollback (remove + 파일 삭제). preload()가드를READY.containsKey→lookup() != null로 변경. lookup 은 파일 존재까지 확인하므로 디스크와 어긋난 stale 키가 있어도 자동으로 self-heal 되어 재다운로드가 가능.
리뷰어 지적 반영.
Downloads
- 기존 캐시 재인덱싱 분기는 epoch 1회만 검사 후
-
released this
2026-05-16 22:51:32 +09:00 | 12 commits to main since this release/videoCache clear의 post-move publish race 닫음.- v0.4.18 은
Files.move직전 만 epoch 검사 → move 와READY.put사이 윈도우가 살아 있었음. - 이 윈도우에 clearAll 이 들어오면: epoch++ → READY clear → 파일 삭제 → download 가
READY.put으로 부활 + "완료" 채팅까지 emit. - 수정: move 직후 두 번째 epoch 검사 추가. mismatch 면
finalPath삭제 후 publish 스킵.
리뷰어 지적 반영.
Downloads
- v0.4.18 은
-
released this
2026-05-16 22:48:16 +09:00 | 13 commits to main since this release/videoCache clear도중 다운로드 race 수정.- 이전: clearAll() 이 IN_FLIGHT 만 비우고 진행 중인 다운로드는 그대로 둠 → 그 다운로드가 .part → 최종 move 후 READY 에 다시 등록되어 캐시 파일 한 개가 clear 이후에 부활.
- 수정:
AtomicLong CACHE_EPOCH추가. preload 가 epoch 캡처, clearAll 이 epoch 증가, download 가 pre-start / read loop / pre-publish 세 지점에서 검사. mismatch 시 .part 삭제 후 종료. Windows 호환을 위해 stream close 이후에 삭제. - clearAll 단계 순서: epoch 증가 → index 비우기 → 파일 삭제.
리뷰어 지적 반영.
Downloads
-
released this
2026-05-16 22:40:40 +09:00 | 14 commits to main since this releasemusic_quiz 데이터팩 연동 핸드셰이크 추가 —
docs/mc_video_player_mod_integration.md사양 구현.서버:
- 매 server tick
#server mq_video_mod = 1 - 클라이언트의 hello payload 수신 시
<player> mq_video_mod = 1 mq_video_modobjective 부재 시(데이터팩 미적용) 조용히 skip
클라이언트:
- JOIN 시 hello 1 회 전송
- 이후 ~5 초 주기 재전송 (필수 — 데이터팩
mq:players/login이 score 를 0 으로 리셋하기 때문)
페이로드:
video_player:mq_hello(VAR_INT version, v1).Downloads
- 매 server tick
-
released this
2026-05-16 20:08:25 +09:00 | 15 commits to main since this releasev0.4.16 — fix v0.4.15 regressions
max_cache_mb가 저장됨.VideoPlayerConfig.save()가max_cache_mb키를 빠뜨려서, auto-augment 한 직후 다시 사라지는 버그를 고침. 이제/videoCache add/remove/clear후에도 새 키가 그대로 유지./videoCache clear가 진짜 전부 삭제됨. 새ClearCachePayload가 클라이언트video_player_cache/디렉터리 전체를 wipe. 등록 안 된 leftover 파일·legacy preload 다운로드·이전 세션 잔여물까지 한 방에 정리. 등록 목록이 비어 있어도 클라이언트에 wipe 신호가 나감.- 전체 캐시 cap 이 병렬 다운로드에서도 보장됨. 다운로드를 single-thread executor 로 직렬화. 50개가 동시에 join 해도 한 번에 하나씩 받으므로
cacheDirSize()가 직전 완료분을 포함한 정확한 사용량을 봄.
설치는 v0.4.15 와 동일. config 파일은 자동 보강되니 안 건드려도 됨.
Downloads
-
released this
2026-05-16 20:01:41 +09:00 | 16 commits to main since this releasev0.4.15 — split per-video vs total cache cap
max_preload_mbis now strictly the per-video download cap. Default raised from 750 → 2048 MB so a single 4K short clip can preload without hitting the wall.- New
max_cache_mbknob caps the total client-side cache directory size. Default 750 MB, sized for ~50 short FHD clips (5 Mbps × 20 s ≈ 12.5 MB each). Enforced cooperatively at the start of each/videoPreloaddownload and during the read loop, so late-arriving bytes can't blow past the cap. VideoPlayerConfig.load()now detects missing keys (max_preload_mb,max_cache_mb,render_distance_blocks) inconfig/video_player.jsonand rewrites the file once with defaults filled in. Existing servers pick up new options automatically — no need to delete the file.CachePolicyPayloadnow carries(maxPerVideoBytes, maxCacheBytes, renderDistanceBlocks). Client chat errors distinguish "단일 영상 NMB 초과" vs "전체 캐시 NMB 초과".dist/added to.gitignore(release artifacts attach to Gitea releases, never committed).
Install
Same as v0.4.14. Pick the jar matching your client's OS/arch; the vanilla
video_player-0.4.15.jarrequires JavaCV on the user-supplied classpath.Downloads
-
released this
2026-05-16 19:52:40 +09:00 | 17 commits to main since this releasev0.4.14
/videoCache clear추가 — 저장된 모든 named 항목을 한 번에 삭제하고, 접속 중인 모든 클라이언트에cache_delete를 보내서 디스크 캐시 파일도 같이 정리.remove <이름>을 한 줄씩 안 쳐도 됨.기본
max_preload_mb1024 → 750 — 20초 FHD 영상 약 50개 분량 (FHD H.264 ~5 Mbps × 20 s ≈ 12.5 MB → 50 × 15 MB ≈ 750 MB, 여유 포함) 에 맞춰 다시 잡았습니다. 이미video_player.json에max_preload_mb가 들어가 있는 서버는 그 값 그대로 사용 — 새 기본값은 fresh install 과 클라이언트 bootstrap (JOIN policy packet 도착 전) 에만 적용됩니다.다른 동작은 v0.4.13 과 동일.
다운로드
자기 OS 에 맞는 jar 받아서 v0.4.13 과 교체:
- Windows x64:
video_player-windows-x86_64-0.4.14.jar - Linux x64:
video_player-linux-x86_64-0.4.14.jar - macOS Intel:
video_player-macosx-x86_64-0.4.14.jar - macOS Apple Silicon:
video_player-macosx-arm64-0.4.14.jar - 직접 JavaCV 설치:
video_player-0.4.14.jar
Downloads
- Windows x64:
-
released this
2026-05-16 04:03:43 +09:00 | 18 commits to main since this releasev0.4.13
4K 영상 삭제 시 튕김 수정: 디코더 스레드의
MemoryUtil.memCopy가 진행 중일 때 다른 스레드에서grabber.close()가 native plane 을 free 해버리면서 발생하던 EXCEPTION_ACCESS_VIOLATION 을 race-free 구조로 재설계. 이제grabber.close()는 디코더 스레드 자신만 호출하고, stop 측은 신호+interrupt+join 만 합니다.Config 추가 (
<gameDir>/config/video_player.json):max_preload_mb(기본 1024) — 클라이언트가 한 영상을 캐시할 때 받는 최대 크기. 기존 하드코딩된 512 MB 캡을 대체. 20초 FHD 영상 50개 = 약 600 MB 라서 1 GB 면 여유 있음.render_distance_blocks(기본 128) — 영상 패널이 보이는 최대 거리(블록). 기존 하드코딩된 128 을 대체.
명령어 변경:
/videopreload→/videoCache로 이름 변경 + 서브커맨드:/videoCache add <이름> <주소>— 이름 등록 + 전 클라이언트에 preload 전송. 이름 중복 불가./videoCache list— 등록된 항목[이름] : [주소](주소 클릭 가능)./videoCache remove <이름>— 서버 config 에서 삭제 + 전 클라이언트의 디스크 캐시 파일도 삭제.
/videoPlace ... <url|이름>—add로 등록한 이름을 URL 대신 넣으면 같이 재생. 우클릭 GUI 도 동일.- 대문자/소문자 alias 정리: 이제
/videoStick,/videoPlace,/videoDelete,/videoMute,/videoCache만. 소문자 alias 는 제거됨.
기타:
memCopy길이를src.capacity()와width * height * 4둘 다로 검증 (reviewer 권고).JOIN시 정책 payload (max_preload_mb+render_distance_blocks) 를 먼저 전송하고 그 다음 preload URL 들 전송.
다운로드
자기 OS 에 맞는 jar 받으세요:
- Windows x64:
video_player-windows-x86_64-0.4.13.jar - Linux x64:
video_player-linux-x86_64-0.4.13.jar - macOS Intel:
video_player-macosx-x86_64-0.4.13.jar - macOS Apple Silicon:
video_player-macosx-arm64-0.4.13.jar - 직접 JavaCV 설치하는 분:
video_player-0.4.13.jar
Downloads
-
v0.4.12 — single-sided anchor quad
StableSome checks failedbuild / build (push) Has been cancelledreleased this
2026-05-16 03:29:03 +09:00 | 19 commits to main since this releasev0.4.12 — 앵커 단방향 렌더링
앵커는 디자인상 벽에 붙어있는 구조 → 뒷면은 항상 벽 너머라 보이지 않는데, 그 동안 양면을 다 그리고 있었습니다. 뒷면 vertex 4개 제거 → fragment shader 부하 절반, vertex 처리도 절반.
부가효과: 만약 player 가 spectator 모드로 벽을 뚫고 들어가서 뒤에서 봤을 때 보였던 mirrored 텍스처 artifact 도 같이 사라집니다.
0.4.11 까지의 디코더 페이싱 / ring buffer / RGBA pixel format 등은 그대로 유지.
받기
- Windows 64bit:
video_player-windows-x86_64-0.4.12.jar - macOS Intel:
video_player-macosx-x86_64-0.4.12.jar - macOS Apple Silicon:
video_player-macosx-arm64-0.4.12.jar - Linux 64bit:
video_player-linux-x86_64-0.4.12.jar - 바닐라(JavaCV 별도 설치용):
video_player-0.4.12.jar
Downloads
- Windows 64bit: