129 lines
4.2 KiB
Markdown
129 lines
4.2 KiB
Markdown
# Neighbor Sender Setup
|
|
|
|
## Host
|
|
|
|
- Sender: `192.168.1.84` / `DESKTOP-M9FTRLL`
|
|
- SSH: `ssh "madman's lullaby@192.168.1.84"`
|
|
- Install root: `C:\Meta\Mimir`
|
|
- Receiver OBS workstation: `192.168.1.66`
|
|
|
|
## Installed State
|
|
|
|
- FFmpeg installed through winget as `Gyan.FFmpeg 8.1.1`.
|
|
- FFmpeg alias path observed:
|
|
- `C:\Users\Madman's Lullaby\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe`
|
|
- NVIDIA GPU observed:
|
|
- `NVIDIA GeForce RTX 4060 Ti`
|
|
- driver `591.86`
|
|
- FFmpeg reports:
|
|
- `srt` input/output protocol
|
|
- `h264_nvenc` encoder
|
|
- SoundVolumeView installed through winget as `NirSoft.SoundVolumeView`.
|
|
|
|
## Sender Config
|
|
|
|
Live local config on the sender:
|
|
|
|
```text
|
|
C:\Meta\Mimir\config\localcast.json
|
|
```
|
|
|
|
Current endpoints:
|
|
|
|
```text
|
|
video: srt://192.168.1.66:5100?mode=caller&latency=120000
|
|
focusrite srt://192.168.1.66:5101?mode=caller&latency=120000
|
|
system srt://192.168.1.66:5102?mode=caller&latency=120000
|
|
```
|
|
|
|
Current video capture size is `1920x1080` for the interactive desktop. Do not
|
|
trust the `1024x768` size reported from SSH; that is the remote session display,
|
|
and using it captures only a slice of the actual desktop.
|
|
|
|
OBS on the receiver should add listener-mode Media Sources:
|
|
|
|
```text
|
|
video: srt://0.0.0.0:5100?mode=listener&latency=120000&timeout=5000000
|
|
focusrite srt://0.0.0.0:5101?mode=listener&latency=120000&timeout=5000000
|
|
system srt://0.0.0.0:5102?mode=listener&latency=120000&timeout=5000000
|
|
```
|
|
|
|
As of `2026-05-18`, the receiver OBS scene collection at
|
|
`%APPDATA%\obs-studio\basic\scenes\Untitled.json` has these sources added to
|
|
the current scene:
|
|
|
|
```text
|
|
Neighbor PC - Video
|
|
Neighbor PC - Focusrite
|
|
Neighbor PC - System Audio
|
|
```
|
|
|
|
The pre-edit backup is next to the scene file with a
|
|
`Untitled.json.localcast-backup-*` suffix.
|
|
|
|
## Desktop Launchers
|
|
|
|
Madman's desktop has:
|
|
|
|
```text
|
|
C:\Users\Madman's Lullaby\Desktop\Start Mimir Sender.cmd
|
|
C:\Users\Madman's Lullaby\Desktop\Stop Mimir Sender.cmd
|
|
```
|
|
|
|
Start launcher:
|
|
|
|
- runs `scripts\start-localcast-desktop.ps1`
|
|
- uses `config\localcast.json`
|
|
- passes the winget FFmpeg alias path explicitly
|
|
- calls `SoundVolumeView.exe` by absolute path inside PowerShell because the
|
|
winget alias is not reliably available in interactive `cmd.exe`
|
|
- sets Windows default render to `Focusrite USB Audio\Device\Speakers\Render`
|
|
- sets Windows default capture to `Focusrite USB Audio\Device\Analogue 1 + 2\Capture`
|
|
- writes FFmpeg logs under `C:\Meta\Mimir\logs`
|
|
|
|
Stop launcher:
|
|
|
|
- runs `scripts\stop-localcast-desktop.ps1`
|
|
- stops FFmpeg processes whose command line contains `srt://`
|
|
- restores Windows default render to `Focusrite USB Audio\Device\Speakers\Render`
|
|
- restores Windows default render to `Focusrite USB Audio\Device\Speakers\Render`
|
|
|
|
## Audio Reality
|
|
|
|
FFmpeg DirectShow discovery originally exposed one hardware audio input:
|
|
|
|
```text
|
|
Analogue 1 + 2 (Focusrite USB Audio)
|
|
```
|
|
|
|
The sender FFmpeg build does not expose a native `wasapi` input device, so it
|
|
cannot directly capture primary playback by itself. `scripts\wasapi-loopback-capture.ps1`
|
|
is the direct Core Audio loopback path. It works when launched in the logged-in
|
|
console session and audio is actually rendering; SSH-only launches can open the
|
|
endpoint but receive no render packets. The native/co-streamer capture path
|
|
therefore schedules the WASAPI loopback leg into the interactive session and
|
|
pulls the resulting raw float PCM back for alignment.
|
|
|
|
Do not rename the loopback in config unless the replacement appears in:
|
|
|
|
```powershell
|
|
ffmpeg -hide_banner -f dshow -list_devices true -i dummy
|
|
```
|
|
|
|
If the loopback file is zero bytes, no app audio rendered during the capture
|
|
window. Do not widen OBS to unsynchronized raw audio as a workaround.
|
|
|
|
## SSH Testing Trap
|
|
|
|
Do not use an SSH-launched sender process as proof that video capture is broken.
|
|
When launched from SSH, `gdigrab` sees the remote Windows session desktop and
|
|
can fail with `Failed to capture image (error 5)`. The sender video process
|
|
must be launched from Madman's interactive desktop, normally through:
|
|
|
|
```text
|
|
C:\Users\Madman's Lullaby\Desktop\Start Mimir Sender.cmd
|
|
```
|
|
|
|
Attached SSH probes are still useful for audio devices and SRT reachability.
|
|
For example, an attached FFmpeg probe successfully transmitted audio to OBS on
|
|
ports `5101` and `5102`.
|