Ich bin damit einverstanden, dass das Problem darin besteht, dass Pulseaudio ein USB-Gerät nicht als Standardgerät festlegt, da es beim Start des Impulses nicht vorhanden ist.
Meine Lösung hierfür ist also, sich in das System einzuklinken , das bemerkt, wenn ein USB-Gerät angeschlossen ist ... UDEV!
Übrigens sind diese Anweisungen ein wenig irre, und ich gehe davon aus, dass Sie es mögen, Dinge an der Befehlszeile zu erledigen und der Root-Benutzer zu werden, der udev-Dateien aktualisiert und Skripte ausführbar macht.
Finde zuerst etwas heraus
USB-ID
Der erste Schritt besteht darin, Ihre Webcam anzuschließen und den magischen Anbieter und die Produktnummern durch Eingabe zu finden
lsusb
Ich verwende eine Microsoft Lifecam und es wird angezeigt als
Bus 001 Device 013: ID 045e:072d Microsoft Corp.
Der wichtige Teil ist 045e: 072d
Pulseaudio-Gerät
Ermitteln Sie als Nächstes bei angeschlossener Webcam den Namen des pulseaudio-Geräts. Art
pacmd list-sources
Auch hier suche ich nach der Leitung, die name:
dann etwas über eine Microsoft Lifecam hat ... hier ist es
name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>
so wird mein pulseaudio Gerätename sein alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
UDEV-Regeln
Dann habe ich eine neue udev-Regel erstellt, die ausgelöst wird, wenn ein USB-Gerät mit vendor = 045e und product = 072d angeschlossen wird. Um eine Regel zu erstellen, erstellen Sie eine neue Datei mit dem Namen /etc/udev/rules.d/
SOMETHING.rules
(Ich habe meine Datei aufgerufen /etc/udev/rules.d/95-webcam-mic.rules
).
Fügen Sie diese Zeile in die Datei ein
SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"
Denken Sie daran, ATTR {idVendor} und ATTR {idProduct} durch die Werte für Ihre Webcam zu ersetzen .
Diese Regel führt ein Skript aus, um das USB-Gerät für die Eingabe festzulegen, das ist der RUN+="/usr/local/bin/webcam-mic"
Teil.
Zum Schluss stellen Sie die Webcam für die Eingabe ein
Schnelle Überblickszeit. Jedes Mal, wenn ich meine Webcam anschließe, möchte ich den Befehl ausführen
pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
Der Befehl muss jedoch wie ich ausgeführt werden (der Benutzer, der den Desktop ausführt), aber udev wird als Root-Benutzer ausgeführt. Wenn also udev meinen Befehl ausführt, muss er auf meinen Benutzer geändert werden und dann den Befehl ausführen.
Wir haben also zwei Möglichkeiten.
Schnell und dreckig . Lasse die udev-Regel laufen, su james -c pacmd set-default-source...
das ist sooo falsch, dass ich den Befehl nicht fertig tippen kann. Was ist, wenn Sie die Webcams wechseln? Was ist, wenn Sie dies für einen anderen Benutzer installieren?
Etwas sauberer . Führen Sie ein Skript aus, das eine Standarddatei mit dem Gerätenamen pulseaudio und Ihrem Benutzernamen liest. Wenn Sie die Dateien möchten, sind sie auf GitHub. Zuerst das Drehbuch /usr/local/bin/webcam-mic
. In der Defaults-Datei müssen /etc/default/webcam-mic
lediglich die 2 Shell-Variablen definiert werden (siehe Kommentar in der Übersicht). Setzen Sie das Skript in /usr/local/bin/
und machen Sie es ausführbar. /etc/defaults/
Legen Sie dann die Standarddatei in und bearbeiten Sie sie, um Ihren Benutzernamen und das Pulseaudio-Gerät von früher zu verwenden.
Viel Glück!