Wie kann mein Audioeingang immer das Webcam-Mikrofon sein?

14

Jedes Mal, wenn ich Skype verwenden möchte, muss ich die Toneinstellungen vornehmen. Schalten Sie dort den Audioeingang auf " Webcam " und deaktivieren Sie die Schaltfläche " Stumm ". Es ist ziemlich nervig. Gibt es eine Möglichkeit, immer die gleiche Konfiguration beizubehalten?

Gizmoatwork
quelle
1
Ich habe dieses Problem auch mit einer Logitech Quickacam. Nach jedem Neustart muss ich die Einstellungen überprüfen und sie als Standardeingabe zurücksetzen, damit sie funktionieren. Ich denke, es hat etwas mit der Tatsache zu tun, dass USB-Geräte geladen werden, nachdem die Toneinstellungen so festgelegt wurden, dass Puls oder auch das USB-Mikrofon nicht "sehen". Leider ist es nicht so wichtig, dass ich die Ärmel hochkremple und anfange, Konfigurationsdateien zu durchsuchen und zu bearbeiten, da das "Problem" eigentlich kein Problem ist, sondern nur eine Unannehmlichkeit.

Antworten:

14

Ändern der Standardeinstellungen für PulseAudio

Beim Ausführen von pulseaudio können alle Einstellungen definiert werden, indem benutzerdefinierte Konfigurationsdateien in das versteckte .pulseVerzeichnis in Ihrem HOME gestellt werden. Wenn diese Datei dort noch nicht vorhanden ist, können Sie die Standarddateien von /etc/pulse/als Vorlage verwenden. Die meisten Einträge enthalten ausführliche Erklärungen in diesen Dateien.

  • ~/.pulse/default.pa zum Laden von Modulen und Definieren von Standardeinstellungen
  • ~/.pulse/client.conf um einen Client für den Soundserver zu konfigurieren
  • ~/.pulse/daemon.conf Abtastraten und Puffer definieren

Um Ihre Webcam zur Standardquelle zu machen, müssen wir den Namen und die Nummer dieser Quelle kennen, indem wir die Liste durchsehen, die mit dem folgenden Befehl in einem Terminal erstellt wurde:

pacmd list-sources

Wir bearbeiten dann die folgende Zeile in ~/.pulse/default.pa:

set-default-source [name]

und [name]durch den Namen oder die Quellennummer der gewünschten Quelle ersetzen . Wir müssen dann sicherstellen, dass die Quelle nicht stummgeschaltet ist, indem wir diese Zeile hinzufügen:

set-source-mute [name]|[#n]> 0

Geben Sie den Namen oder den Index Ihrer Quelle an. Sie können eine Vielzahl anderer Einstellungen hinzufügen, auf die im PulseAudio Wiki verwiesen wird (jetzt auf der Manpage :)man pulse-cli-syntax .

Es wird empfohlen, zuerst alle Befehle über die Befehlszeilenschnittstelle zu testen, bevor Sie die Konfigurationsdateien ändern. Dies kann mit in einem Terminal geöffnet werdenpacmd

Takkat
quelle
In meinem .pulse-Ordner befindet sich keine default.pa. Soll ich eine neue Datei mit einer Zeile erstellen: set-default-source x?
zu tun
3
@ ToDo Die Standardeinstellungen sind in /etc/pulse/default.pa. Verwenden Sie diese Datei oder kopieren Sie sie nach, ~/.pulsebevor Sie sie bearbeiten.
Takkat
Der Vollständigkeit halber: man muss als Eingabegerätenamen das schreiben, was in spitzen Klammern der Ausgabe von steht pacmd list-sources. Dh mit für mein Gerät war es set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Hi-Angel,
@ Hi-angel: danke dafür - die antwort kam von einer viel älteren version von pulseaudio. Wir können jetzt den richtigen Namen einer Spüle verwenden.
Takkat
6

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.

  1. 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?

  2. 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-miclediglich 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!

James Mitchell
quelle
Jede Möglichkeit, diese Skripte erneut hochzuladen; scheinen sie aus dem Pastebin verschwunden zu sein?
ej159
Ich habe das Skript auf GitHub zusammengefasst und die Antwort aktualisiert.
James Mitchell
2

Die Lösung von Takkat hat bei mir nicht funktioniert. Hier ist meine Lösung für alle, die noch ein Problem damit haben.

Es gab zwei Probleme für mich mit der Lösung von Takkat. Zuerst wurde mir klar, dass es nach dem Start eine Verzögerung geben muss, bevor auf das Mikrofon umgeschaltet werden kann (ich verwende in meiner Lösung unten den Befehl 'sleep'). Der Befehl 'set-default-source' funktionierte auch, um das USB-Mikrofon einzuschalten, aber irgendwie erkannte Skype dies nicht und benutzte weiterhin das interne Mikrofon.

Damit dies funktioniert, ist es zunächst sinnvoll, pavucontrol zu installieren. Öffnen Sie in pavucontrol die Registerkarte "Konfiguration" und beobachten Sie, was mit den folgenden Befehlen geschieht, um zu überprüfen, ob die Dinge wie beabsichtigt funktionieren.

Dann geben Sie an einem Terminal Folgendes ein:

pacmd

Von dort aus geben Sie ein:

list-cards

Suchen Sie in der Ausgabe die Indexnummer des gewünschten USB-Audios (in meinem Fall war dies '1'). Schauen Sie sich dann die Zeilen an, die unter "Profile" sowohl für die Standardkarte als auch für die USB-Karte aufgeführt sind. Diese sollten mit den in pavucontrol aufgelisteten identisch sein und können so etwas wie "Output: Input + Output", "Off" oder "Input: Analog-Mono" usw. sein. Der Befehl set-card-profile <index number> <profile name>sollte sich weiterhin in der pacmd-Befehlszeile ändern die Einstellungen in pavucontrol. Was wir hier tun möchten, ist, das interne Audio von Duplex auf Output und das USB auf Input umzustellen.

Sobald die entsprechenden Profile gefunden wurden, möchten wir einen Startbefehl erstellen, um einige Einstellungen direkt nach dem Start zu ändern. Um einen Startbefehl zu erstellen, öffnen Sie den Bindestrich und suchen Sie nach "Startanwendungen". Klicken Sie dann auf "Hinzufügen", geben Sie einen Namen Ihrer Wahl und den entsprechenden Befehl ein.

Nach Versuch und Irrtum sah mein Startbefehl so aus:

bash -c "sleep 30 && pacmd set-card-profile 0 output:analog-stereo && pacmd set-card-profile 1 off && pacmd set-card-profile 1 input:analog-mono"

Erläuterung: Ich habe festgestellt, dass der Befehl 'sleep' erforderlich ist. Dies bedeutet, dass der Befehl nach einer Pause ausgeführt wird, die ich auf 30 Sekunden festgelegt habe (ich denke, dies kann weniger sein, spielen Sie damit herum). Der nächste Befehl (nach dem '&&') besteht darin, das standardmäßige (interne) Kartenprofil so zu konfigurieren, dass es nur von Eingabe + Ausgabe (Duplex, dies ist die Standardeinstellung) auf Ausgabe umschaltet. Der nächste Befehl ist, dass die USB-Soundkarte (in meinem Fall die Nummer '1') ausgeschaltet wird. Der letzte Befehl ist, dass dieselbe Karte im Modus 'Eingang: Analog-Mono' wieder eingeschaltet wird.

Möglicherweise müssen Sie mit diesen Einstellungen herumspielen, um die zu finden, die funktioniert.

Wenn ich jetzt starte, ist mein USB-Mikrofon nach 30 Sekunden einsatzbereit und Skype verwendet das richtige Mikrofon.

Geoffrey
quelle
0

Versuchen Sie dies, klicken Sie auf das Lautsprechersymbol in Ihrem oberen Bereich, und wählen Sie die Klickeinstellungen aus. Dort können Sie eine Standardeingangsoption für Ihr Mikrofon auswählen und möglicherweise die Hardwarekonfiguration ändern, damit es funktioniert.

helios66
quelle
1
Vielen Dank für Ihre Hilfe, aber genau das mache ich gerade. Ich sehe jedoch keine Möglichkeiten, dies zu einer Standardeinstellung zu machen. Von Zeit zu Zeit muss ich es erneut tun, da sich die Einstellung geändert hätte.
Gizmoatwork