Add dependency bootstrap and simulation tests
This commit is contained in:
1 parent
089c2421c5
commit
4088f2299d
3 files changed
+580
-15
No files matched your search
@@ -33,6 +33,8 @@ RTSP는 `ddagrab` 기반 Desktop Duplication API로 화면과 마우스 커서
|
||||
- 로그인 시 자동 실행 작업 등록 및 제거
|
||||
- `config.ini` 기반 기능별 설정과 명령줄 override
|
||||
- 오디오 캡처/AAC 트랙을 `1` 또는 `0`으로 활성화·비활성화
|
||||
- FFmpeg와 MediaMTX 부재 시 HTTPS 다운로드, SHA-256 검증, 자동 설치
|
||||
- 모니터·오디오·NIC·프로세스·설정·안전장치용 내장 시뮬레이션 30건
|
||||
|
||||
## RTSP URL
|
||||
|
||||
@@ -55,7 +57,7 @@ rtsp://<현재_NIC_IP>:8554/monitor2
|
||||
- `logs/monitor2-ffmpeg.log`: monitor2 FFmpeg 로그
|
||||
- `logs/monitor1-audio.log`, `logs/monitor2-audio.log`: WASAPI loopback worker 오류 로그
|
||||
|
||||
실행 파일과 생성 파일은 저장소에 포함하지 않습니다. 배포할 때 `ffmpeg.exe`와 `mediamtx.exe`를 `screen-rtsp.ps1` 옆에 둡니다.
|
||||
실행 파일과 생성 파일은 저장소에 포함하지 않습니다. `Dependencies.AutoInstall=1`이면 실행할 때 없는 `ffmpeg.exe`와 `mediamtx.exe`를 스크립트 옆에 자동 설치합니다.
|
||||
|
||||
## 설정 파일
|
||||
|
||||
@@ -93,6 +95,11 @@ SignalThreshold=0.0005
|
||||
| `Network` | `NicDescription` | 빈 값 | 비우면 기본 경로 NIC 자동 선택 |
|
||||
| `Network` | `HealthTarget` | 빈 값 | Source IP ping 대상 |
|
||||
| `RTSP` | `Port` | `8554` | MediaMTX RTSP 포트 |
|
||||
| `Dependencies` | `AutoInstall` | `1` | 실행 파일 부재 시 자동 설치 여부 |
|
||||
| `Dependencies` | `FFmpegUrl` | Gyan essentials ZIP | FFmpeg Windows ZIP 다운로드 주소 |
|
||||
| `Dependencies` | `FFmpegSha256Url` | Gyan SHA-256 | FFmpeg 게시 해시 주소 |
|
||||
| `Dependencies` | `MediaMTXUrl` | v1.21.1 공식 ZIP | MediaMTX Windows amd64 ZIP 주소 |
|
||||
| `Dependencies` | `MediaMTXSha256` | v1.21.1 공식 해시 | MediaMTX ZIP 고정 SHA-256 |
|
||||
|
||||
GPU, 모니터, 오디오, NIC, FFmpeg 지원, RTSP 포트를 확인하는 PowerShell 명령은 `config.ini` 위쪽에 모두 주석 형태로 포함되어 있습니다.
|
||||
|
||||
@@ -102,9 +109,40 @@ INI를 해석한 최종 설정값만 확인하고 종료할 수도 있습니다.
|
||||
.\screen-rtsp.ps1 -ShowConfiguration
|
||||
```
|
||||
|
||||
## 의존 프로그램 자동 설치
|
||||
|
||||
`ffmpeg.exe` 또는 `mediamtx.exe`가 없고 `Dependencies.AutoInstall=1`이면 다음 순서로 자동 설치합니다.
|
||||
|
||||
1. HTTPS 주소만 허용하고 ZIP을 Windows 임시 폴더에 다운로드합니다.
|
||||
2. FFmpeg는 Gyan이 게시한 SHA-256을 받아 검증하고, MediaMTX는 공식 v1.21.1 Release의 고정 SHA-256을 검증합니다.
|
||||
3. 압축 안의 실행 파일만 `screen-rtsp.ps1` 옆으로 복사합니다.
|
||||
4. `ddagrab`, H.264 하드웨어 인코더, AAC 지원과 실행 버전을 확인합니다.
|
||||
5. 검증용 임시 폴더를 삭제합니다.
|
||||
|
||||
송출을 시작하지 않고 설치와 기능 확인만 먼저 수행할 수 있습니다.
|
||||
|
||||
```powershell
|
||||
.\screen-rtsp.ps1 -InstallDependenciesOnly
|
||||
```
|
||||
|
||||
자동 다운로드를 금지하려면 `AutoInstall=0`으로 바꿉니다. 이 경우 실행 파일이 없으면 오류를 표시하고 종료합니다. 자동 설치에는 인터넷 HTTPS 연결과 스크립트 폴더 쓰기 권한이 필요합니다.
|
||||
|
||||
- FFmpeg Windows build: <https://www.gyan.dev/ffmpeg/builds/>
|
||||
- MediaMTX v1.21.1: <https://github.com/bluenviron/mediamtx/releases/tag/v1.21.1>
|
||||
|
||||
## 내장 시뮬레이션
|
||||
|
||||
실제 송출 프로세스나 예약 작업을 만들지 않고 주요 판단 로직 30건을 검사합니다.
|
||||
|
||||
```powershell
|
||||
.\screen-rtsp.ps1 -RunSimulationTests
|
||||
```
|
||||
|
||||
모든 항목이 통과하면 종료 코드 `0`, 하나라도 실패하면 종료 코드 `1`을 반환합니다.
|
||||
|
||||
## 처리 흐름
|
||||
|
||||
1. FFmpeg의 `ddagrab`과 H.264 하드웨어 인코더 포함 여부를 확인합니다.
|
||||
1. FFmpeg와 MediaMTX가 없으면 설정에 따라 다운로드·검증·설치한 뒤, FFmpeg의 `ddagrab`과 H.264 하드웨어 인코더 포함 여부를 확인합니다.
|
||||
2. 설치된 GPU를 `NVIDIA > AMD > Intel` 순서로 찾고 각 인코더를 실제 1프레임으로 초기화합니다.
|
||||
3. 활성 모니터, IPv4 기본 경로 NIC, 활성 오디오 출력 장치를 읽습니다.
|
||||
4. Core Audio peak가 감지된 출력 장치를 우선하고, 신호가 없으면 Windows 기본 출력 장치를 사용합니다.
|
||||
|
||||
Reference in new issue
Block a user