108 lines
3.9 KiB
Markdown
108 lines
3.9 KiB
Markdown
# Streaming Audio
|
|
|
|
`streaming-audio.sh` richtet ein persönliches Streaming-Audiorouting für Fedora,
|
|
PipeWire, OBS und Discord ein. Das Skript trennt Spiel- und Systemton, Discord,
|
|
Firebot und Soundboard in eigene virtuelle Ausgänge.
|
|
|
|
## Signalwege
|
|
|
|
| Virtuelles Gerät | Verwendung | Kopfhörer | OBS | Discord |
|
|
| --- | --- | --- | --- | --- |
|
|
| `game_audio` | Spiel- und Systemton | ja | ja | nein |
|
|
| `discord_sink` | Stimmen aus Discord | ja | ja | nein |
|
|
| `firebot_sounds` | Firebot und Browser | ja | ja | nein |
|
|
| `soundboard_sounds` | Soundboard und Stream Deck | ja | ja | ja, leiser |
|
|
| `discord_micmix` | Gefiltertes OBS-Mikrofon und Soundboard-Kopie | nein | nein | ja |
|
|
|
|
Das echte Mikrofon wird zuerst in OBS bearbeitet. Das OBS-Audiomonitoring leitet
|
|
die gefilterte Stimme anschließend an `discord_micmix` und damit an das virtuelle
|
|
Eingabegerät `Discord-Mikrofon` weiter.
|
|
|
|
## Voraussetzungen
|
|
|
|
- Fedora oder ein vergleichbares System mit PipeWire und WirePlumber
|
|
- `bash`, `pactl`, `pw-link`, `systemctl`, `awk` und `grep`
|
|
- OBS Studio und Discord
|
|
|
|
Die Gerätenamen und Routing-Regeln sind auf das ursprüngliche System abgestimmt.
|
|
Vor einer Verwendung auf einem anderen Rechner müssen insbesondere `MIC_RE`,
|
|
`LINE_OUT_RE` und gegebenenfalls die Erkennung der Anwendungen im Skript angepasst
|
|
werden.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
git clone https://git.hnz.io/hnzio/streaming-audio.git ~/Projekte/streaming-audio
|
|
ln -s ~/Projekte/streaming-audio/streaming-audio.sh ~/bin/streaming-audio.sh
|
|
~/bin/streaming-audio.sh install
|
|
```
|
|
|
|
`install` schreibt die PipeWire-Konfiguration nach
|
|
`~/.config/pipewire/pipewire.conf.d/10-streaming-sinks.conf` und startet die
|
|
PipeWire-Benutzerdienste neu. Laufende Audioverbindungen werden dabei kurz
|
|
unterbrochen. Danach sollten OBS, Discord, Firebot und das Soundboard neu gestartet
|
|
werden.
|
|
|
|
## Verwendung
|
|
|
|
```bash
|
|
~/bin/streaming-audio.sh install
|
|
~/bin/streaming-audio.sh route
|
|
~/bin/streaming-audio.sh status
|
|
~/bin/streaming-audio.sh cleanup
|
|
~/bin/streaming-audio.sh restore-mic
|
|
```
|
|
|
|
- `install` bereinigt alte Instanzen und legt die virtuellen Geräte dauerhaft an.
|
|
- `route` verschiebt aktive Anwendungen und stellt die PipeWire-Verbindungen her.
|
|
- `status` zeigt Geräte, Audiostreams, Module und relevante Verbindungen an.
|
|
- `cleanup` entfernt alte manuelle Module und deaktiviert doppelte Konfigurationen.
|
|
- `restore-mic` setzt das erkannte ZOOM/H6 wieder als Standardmikrofon.
|
|
|
|
`route` sollte ausgeführt werden, wenn OBS, Discord und die zu routenden Anwendungen
|
|
bereits laufen oder gerade Ton ausgeben. Spiele sollten danach gestartet werden,
|
|
damit sie den virtuellen Standardausgang `game_audio` verwenden.
|
|
|
|
## OBS und Discord
|
|
|
|
In OBS unter **Einstellungen > Audio > Erweitert**:
|
|
|
|
- Audiomonitoring-Gerät: `DiscordMicMix`
|
|
|
|
In den erweiterten Audioeigenschaften:
|
|
|
|
- Mikrofon: `Monitor und Ausgabe`
|
|
- Soundboard und alle anderen Quellen: Monitoring aus
|
|
|
|
In Discord:
|
|
|
|
- Eingabegerät: `Discord-Mikrofon`
|
|
|
|
`DiscordMicMix` darf nicht als eigene OBS-Quelle aufgenommen werden. Auch der
|
|
physische Line-Out sollte nicht zusätzlich in OBS aufgenommen werden, da sonst
|
|
doppelte Signale oder Hall entstehen können.
|
|
|
|
## Pegel anpassen
|
|
|
|
Die Pegel und die Loopback-Latenz lassen sich über Umgebungsvariablen ändern:
|
|
|
|
```bash
|
|
DISCORD_MIC_VOLUME=110% \
|
|
DISCORD_SOUNDBOARD_VOLUME=70% \
|
|
DISCORD_SOUNDBOARD_LATENCY_MS=40 \
|
|
~/bin/streaming-audio.sh route
|
|
```
|
|
|
|
Standardwerte sind `115%`, `75%` und `30` Millisekunden.
|
|
|
|
## Hinweise zu `cleanup`
|
|
|
|
Das Skript sucht in `~/.config/pipewire/pipewire.conf.d` nach anderen
|
|
Konfigurationen, die Namen seiner virtuellen Geräte enthalten. Solche Dateien
|
|
werden nicht gelöscht, sondern mit dem Zusatz `.disabled-by-streaming-audio`
|
|
umbenannt. Falls dieser Name bereits existiert, wird eine freie nummerierte Variante
|
|
verwendet.
|
|
|
|
Vor dem ersten Einsatz auf einem anderen System empfiehlt es sich, die vorhandenen
|
|
PipeWire-Konfigurationen zu sichern und die Trefferbedingungen im Skript zu prüfen.
|