Add streaming audio routing script
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user