Add INI configuration and optional audio capture
This commit is contained in:
1 parent
5b15b06570
commit
089c2421c5
4 files changed
+464
-47
No files matched your search
@@ -31,6 +31,8 @@ RTSP는 `ddagrab` 기반 Desktop Duplication API로 화면과 마우스 커서
|
||||
- 기존 MediaMTX가 RTSP 포트를 사용 중이면 해당 프로세스 재사용
|
||||
- 자동 생성 MediaMTX 설정은 RTSP over TCP만 사용해 UDP RTP 포트 충돌 방지
|
||||
- 로그인 시 자동 실행 작업 등록 및 제거
|
||||
- `config.ini` 기반 기능별 설정과 명령줄 override
|
||||
- 오디오 캡처/AAC 트랙을 `1` 또는 `0`으로 활성화·비활성화
|
||||
|
||||
## RTSP URL
|
||||
|
||||
@@ -44,6 +46,7 @@ rtsp://<현재_NIC_IP>:8554/monitor2
|
||||
## 구성
|
||||
|
||||
- `screen-rtsp.ps1`: 캡처, 오디오 loopback, GPU 선택, MediaMTX/FFmpeg watchdog
|
||||
- `config.ini`: 영상, 오디오, 네트워크, RTSP 설정과 진단 명령 예시
|
||||
- `ffmpeg.exe`: `ddagrab`, `h264_nvenc`, `h264_amf`, `h264_qsv`, `aac` 지원 FFmpeg
|
||||
- `mediamtx.exe`: RTSP 서버. 현재 검증 기준 버전은 v1.21.1
|
||||
- `mediamtx.yml`: 없으면 스크립트가 기본 설정을 자동 생성
|
||||
@@ -54,6 +57,51 @@ rtsp://<현재_NIC_IP>:8554/monitor2
|
||||
|
||||
실행 파일과 생성 파일은 저장소에 포함하지 않습니다. 배포할 때 `ffmpeg.exe`와 `mediamtx.exe`를 `screen-rtsp.ps1` 옆에 둡니다.
|
||||
|
||||
## 설정 파일
|
||||
|
||||
기본 설정은 `screen-rtsp.ps1`과 같은 폴더의 `config.ini`에서 읽습니다.
|
||||
|
||||
```ini
|
||||
[Video]
|
||||
FrameRate=30
|
||||
Bitrate=8000k
|
||||
EncoderPriority=NVIDIA,AMD,Intel
|
||||
|
||||
[Audio]
|
||||
Enabled=1
|
||||
Bitrate=192k
|
||||
SignalThreshold=0.0005
|
||||
```
|
||||
|
||||
`Audio.Enabled=1`이면 현재 재생 장치의 시스템 소리를 WASAPI loopback으로 캡처해 AAC 트랙을 추가합니다. `0`이면 오디오 장치 감시, loopback worker, AAC 트랙을 모두 사용하지 않고 영상만 송출합니다.
|
||||
|
||||
줄 앞의 공백을 제외한 첫 문자가 `#`, `;`, `//`이면 설명이나 참고 명령으로 인식해 건너뜁니다. 값 오른쪽의 inline 주석은 지원하지 않으므로 설명은 별도 줄에 작성합니다. 명령줄에서 직접 지정한 값은 INI 값보다 우선합니다.
|
||||
|
||||
알 수 없는 섹션, 설정 이름, 범위를 벗어난 값, `0/1` 이외의 기능 스위치는 시작 전에 오류로 표시합니다.
|
||||
|
||||
| 섹션 | 설정 | 기본값 | 설명 |
|
||||
|---|---|---:|---|
|
||||
| `General` | `ChannelCount` | `2` | 송출 채널과 필요한 모니터 수 |
|
||||
| `General` | `StableTimeSec` | `3` | 정상 상태 안정화 시간 |
|
||||
| `General` | `PollIntervalSec` | `1` | 상태 확인 주기 |
|
||||
| `Video` | `FrameRate` | `30` | 화면 프레임률 |
|
||||
| `Video` | `Bitrate` | `8000k` | 채널별 영상 비트레이트 |
|
||||
| `Video` | `EncoderPriority` | `NVIDIA,AMD,Intel` | GPU 선택 순서 |
|
||||
| `Audio` | `Enabled` | `1` | 시스템 재생음과 AAC 트랙 사용 여부 |
|
||||
| `Audio` | `Bitrate` | `192k` | AAC 비트레이트 |
|
||||
| `Audio` | `SignalThreshold` | `0.0005` | 실제 재생 장치 판별 peak 기준 |
|
||||
| `Network` | `NicDescription` | 빈 값 | 비우면 기본 경로 NIC 자동 선택 |
|
||||
| `Network` | `HealthTarget` | 빈 값 | Source IP ping 대상 |
|
||||
| `RTSP` | `Port` | `8554` | MediaMTX RTSP 포트 |
|
||||
|
||||
GPU, 모니터, 오디오, NIC, FFmpeg 지원, RTSP 포트를 확인하는 PowerShell 명령은 `config.ini` 위쪽에 모두 주석 형태로 포함되어 있습니다.
|
||||
|
||||
INI를 해석한 최종 설정값만 확인하고 종료할 수도 있습니다.
|
||||
|
||||
```powershell
|
||||
.\screen-rtsp.ps1 -ShowConfiguration
|
||||
```
|
||||
|
||||
## 처리 흐름
|
||||
|
||||
1. FFmpeg의 `ddagrab`과 H.264 하드웨어 인코더 포함 여부를 확인합니다.
|
||||
@@ -80,6 +128,14 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\screen-rtsp.ps1
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\screen-rtsp.ps1 -InstallStartup
|
||||
```
|
||||
|
||||
등록된 작업은 `config.ini` 경로만 전달하므로 설정 파일을 수정한 뒤 작업을 다시 시작하면 변경값이 적용됩니다.
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\screen-rtsp.ps1 -StartupStatus
|
||||
Stop-ScheduledTask -TaskName "Screen RTSP Watchdog"
|
||||
Start-ScheduledTask -TaskName "Screen RTSP Watchdog"
|
||||
```
|
||||
|
||||
자동 실행 제거:
|
||||
|
||||
```powershell
|
||||
@@ -88,6 +144,18 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\screen-rtsp.ps1 -Unins
|
||||
|
||||
## 실행 옵션
|
||||
|
||||
다른 설정 파일을 사용하는 예시:
|
||||
|
||||
```powershell
|
||||
.\screen-rtsp.ps1 -ConfigPath C:\RTSP\config.ini
|
||||
```
|
||||
|
||||
명령줄 값은 `config.ini`보다 우선합니다. 다음 실행에서만 오디오를 끄는 예시:
|
||||
|
||||
```powershell
|
||||
.\screen-rtsp.ps1 -AudioEnabled 0
|
||||
```
|
||||
|
||||
GPU 우선순위를 바꾸는 예시:
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in new issue
Block a user