e9052143d7fca389adc5a7fc3cef5517754e2b33
스테이션바/측점(체이니지) - 역 재진입 마커 누락 수정: 측점기준 탐지에 좌표근접(pxPassesTo) 합집합 보강(중복 24px 제거) - kmExists 판정: 좌표 반경만으로 잡힌 통과는 측점값 라벨/검색에서 제외(마커 동그라미는 유지) - 측점값 라벨 겹침 숨김(좌측 우선), 동일항목 브래킷 클러스터 - 측점 검색 순환(통과방향 다음→끝에서 처음), 마커 기준 후보 산출, 입력값 유지/blur 삭제 - 연속 체이니지 수직투영 유틸 분리(client/src/utils/chainage.ts), Minimap 컴포넌트 추가 영상 컨트롤 UI - 선형/드론궤적/좌측패널 토글을 재생바로 통합(settingsStore 공유·persist) - 드론 GPS·고도 HUD 상시 표시, 경로표고·투명도 항상 노출, 겹침제외 버튼 숨김 - 재생바 요소 재배치(좌측패널→선형→드론궤적→드론위치정보→시설등급), 활성색 amber 통일 문서/도구 - 종합 기술명세서(인계+특허 기초) md/html/pdf 3종, UI개선 보고서 3종 - md→html→pdf 변환 스크립트(scripts/md2docs.sh) + 스타일(docs/assets/report.css) - 작업 히스토리 다수 추가(docs/history/) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
abcvideo
2GB 이상 대용량 동영상을 웹 브라우저에서 안정적으로 재생하는 특화 기능 탑재 플레이어.
기능
- 2GB+ 동영상 안정 재생 (로컬 파일 직접 재생 + 서버 Range Request/HLS)
- 프레임 단위 추출 (Canvas 즉시 미리보기)
- 키보드 단축키로 프레임/초/장면 단위 이동
- 자막형 / 메모형 텍스트 오버레이 + VTT/SRT/JSON/CSV 내보내기
- HLS 자동 변환 (FFmpeg 설치 시)
사전 요구사항
- Node.js 20+ LTS
- FFmpeg (HLS 변환 및 프레임 정확 추출 시 필요)
- Windows: https://ffmpeg.org/download.html 에서 다운로드 후 PATH 등록
- macOS:
brew install ffmpeg - Ubuntu:
sudo apt install ffmpeg
설치 및 실행
# 1. 의존성 설치
npm install
# 2. 환경변수 설정
cp server/.env.example server/.env
# 3. 개발 서버 실행 (클라이언트 + 서버 동시)
npm run dev
브라우저에서 http://localhost:5173 접속
개발 서버 포트
| 서비스 | 포트 |
|---|---|
| 클라이언트 (Vite) | 5173 |
| 백엔드 API | 3001 |
키보드 단축키
| 키 | 동작 |
|---|---|
| Space | 재생 / 일시정지 |
| ← / → | 5초 뒤로 / 앞으로 |
| J / L | 10초 뒤로 / 앞으로 |
| , / . | 이전 / 다음 프레임 (일시정지 시) |
| [ / ] | ±30초 이동 |
| 0 ~ 9 | 10% 단위 탐색 |
| F | 전체화면 |
| M | 음소거 |
| + / - | 재생속도 조절 |
| Shift+S | 프레임 캡처 |
| Shift+M | 메모 추가 |
| ? | 단축키 도움말 |
프로젝트 구조
abcvideo/
├── client/ # React 18 + Video.js 8 프론트엔드
├── server/ # Node.js + Express 백엔드
├── shared/ # 공유 TypeScript 타입
└── storage/ # 런타임 생성 (영상, HLS, 프레임)
환경변수 (server/.env)
| 변수 | 기본값 | 설명 |
|---|---|---|
| PORT | 3001 | 서버 포트 |
| FFMPEG_PATH | ffmpeg | FFmpeg 실행 경로 |
| MAX_UPLOAD_SIZE | 21474836480 | 최대 업로드 크기 (20GB) |
| HLS_SEGMENT_TIME | 6 | HLS 세그먼트 길이 (초) |
Languages
TypeScript
85.2%
Python
9.5%
SCSS
4.1%
CSS
0.6%
JavaScript
0.3%
Other
0.3%