Jak moje wejście audio może zawsze być mikrofonem kamery internetowej?

14

Za każdym razem, gdy chcę korzystać ze Skype, muszę wybrać preferencje dźwiękowe. I tam zmień wejście audio na „ kamera internetowa ” i odznacz przycisk „ wycisz ”. To dość denerwujące. Czy istnieje sposób, aby zawsze zachować tę samą konfigurację?

Gizmoatwork
źródło
1
Mam również ten problem z szybką kamerą Logitech. Po każdym ponownym uruchomieniu muszę przejść przez preferencje i zresetować je jako domyślne wejście, aby działało. Myślę, że ma to coś wspólnego z faktem, że urządzenia USB są ładowane po ustawieniu preferencji dźwięku, więc puls lub ALSA nie „widzą” mikrofonu USB. Niestety, ponieważ „problem” nie jest tak naprawdę problemem, tylko niedogodnością, nie jest tak ważne, że chcę zakasać rękawy koszuli i zacząć kopać i edytować pliki konfiguracyjne.

Odpowiedzi:

14

Zmiana domyślnych ustawień PulseAudio

Podczas uruchamiania pulseaudio wszystkie ustawienia można zdefiniować, umieszczając niestandardowe pliki konfiguracyjne w ukrytym .pulsekatalogu w HOME. Jeśli te pliki jeszcze nie istnieją, możesz użyć standardowych plików z /etc/pulse/jako szablonu. Większość wpisów ma pełne wyjaśnienia w tych plikach.

  • ~/.pulse/default.pa ładować moduły i definiować wartości domyślne
  • ~/.pulse/client.conf skonfigurować klienta dla serwera dźwięku
  • ~/.pulse/daemon.conf do zdefiniowania częstotliwości próbkowania i buforów

Aby kamera internetowa była domyślnym źródłem, musimy znać nazwę i numer tego źródła, przeglądając listę utworzoną przez następujące polecenie w terminalu:

pacmd list-sources

Następnie edytujemy następujący wiersz w ~/.pulse/default.pa:

set-default-source [name]

i zamień [name]na nazwę lub numer źródła dla żądanego źródła. Następnie musimy upewnić się, że źródło nie jest wyciszone, dodając ten wiersz:

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

Podaj nazwę lub indeks swojego źródła. Możesz dodać wiele innych ustawień, do których odwołuje się Wiki PulseAudio Wiki (teraz na stronie podręcznika :)man pulse-cli-syntax .

Przed zmianą plików konfiguracyjnych zaleca się przetestowanie wszystkich poleceń za pomocą interfejsu wiersza poleceń. Można to otworzyć za pacmd pomocą terminala

Takkat
źródło
W moim folderze .pulse nie ma pliku default.pa. Czy powinienem utworzyć nowy plik z jedną linią: set-default-source x?
Do Do
3
@DoDo domyślnych ustawień są /etc/pulse/default.pa. Użyj tego pliku lub skopiuj go ~/.pulseprzed edycją.
Takkat,
Dla kompletności: jako urządzenie wejściowe należy wpisać nazwę tego, co jest zapisane w nawiasach klamrowych wyjścia pacmd list-sources. Tak było z moim urządzeniem set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Hi-Angel
@ Hi-Angel: dziękuję za to - odpowiedź nadeszła ze znacznie starszej wersji pulseaudio. Możemy teraz używać prawidłowej nazwy zlewu.
Takkat
6

Zgadzam się, że problem polega na tym, że Pulseaudio nie ustawia urządzenia USB jako domyślnego, ponieważ nie jest ono obecne, gdy zaczyna się puls.

Więc moim rozwiązaniem jest podłączenie się do systemu, który zauważy, że podłączone jest urządzenie USB ... UDEV!

BTW, te instrukcje są nieco funky i zakładam, że czujesz się komfortowo, robiąc rzeczy w wierszu poleceń i stając się użytkownikiem root, aby zaktualizować pliki udev i umożliwić wykonywanie skryptów.

Najpierw dowiedz się czegoś

Identyfikator USB

Pierwszym krokiem jest podłączenie kamery internetowej i znalezienie magicznego sprzedawcy i numeru produktu, pisząc

lsusb

Używam Microsoft Lifecam i pokazuje się jako

Bus 001 Device 013: ID 045e:072d Microsoft Corp.

ważną częścią jest 045e: 072d

Urządzenie Pulseaudio

Następnie, gdy kamera internetowa jest podłączona, znajdź nazwę urządzenia pulseaudio. Rodzaj

pacmd list-sources

Znowu szukam linii, która się zaczyna, name:a potem ma coś o Microsoft Lifecam ... oto jest

name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>

więc nazwa mojego urządzenia pulseaudio będzie alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Zasady UDEV

Następnie stworzyłem nową regułę udev, która jest uruchamiana, gdy zostanie włożone urządzenie USB z dostawcą = 045e i produktem = 072d. Aby utworzyć regułę, utwórz nowy plik o nazwie /etc/udev/rules.d/COŚ.rules (nazwałem mój plik /etc/udev/rules.d/95-webcam-mic.rules).

Umieść tę linię w pliku

SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"

Pamiętaj, aby zastąpić ATTR {idVendor} i ATTR {idProduct} wartościami dla kamery internetowej.

Zasada ta polega na uruchomieniu skryptu w celu ustawienia urządzenia USB do wprowadzania danych, czyli RUN+="/usr/local/bin/webcam-mic"części.

Na koniec ustaw kamerę internetową jako wejście

Krótki czas przeglądu. Za każdym razem, gdy podłączam kamerę internetową, chcę uruchomić polecenie

pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Ale polecenie musi działać jako ja (użytkownik uruchamiający pulpit), ale udev działa jako użytkownik root - więc kiedy udev uruchamia moje polecenie, muszę je zmienić na mojego użytkownika, a następnie uruchomić polecenie.

Mamy więc 2 opcje.

  1. Szybko i brudno . Uruchom regułę udev, su james -c pacmd set-default-source... to źle, bo nie mogę nawet dokończyć wpisywania polecenia. Co się stanie, jeśli zmienisz kamery internetowe? Co jeśli zainstalujesz to dla innego użytkownika?

  2. Nieco czystsze . Uruchom skrypt, który odczytuje domyślny plik, który ma nazwę urządzenia pulseaudio i twoją nazwę użytkownika. Jeśli chcesz, aby pliki były w GitHub. Najpierw skrypt /usr/local/bin/webcam-mic. Plik domyślny /etc/default/webcam-micmusi tylko zdefiniować 2 zmienne powłoki, zgodnie z komentarzem w liście. Włóż skrypt /usr/local/bin/i wykonaj go. Następnie włóż plik domyślny /etc/defaults/i edytuj go, aby użyć wcześniejszej nazwy użytkownika i urządzenia pulseaudio.

Powodzenia!

James Mitchell
źródło
Każda szansa na ponowne przesłanie tych skryptów; wydaje się, że zniknęły z pastebinu?
ej159,
Umieściłem skrypt w GitHubie i zaktualizowałem odpowiedź.
James Mitchell
2

Rozwiązanie Takkat nie działało dla mnie, oto moje rozwiązanie dla każdego, kto nadal ma z tym problem.

Z rozwiązaniem Takkat były dla mnie dwa problemy. Po pierwsze, zdałem sobie sprawę, że musi nastąpić opóźnienie po uruchomieniu, zanim nastąpi przełączenie na mikrofon (w poniższym rozwiązaniu używam polecenia „uśpienie”). Ponadto polecenie „set-default-source” działało, aby włączyć mikrofon USB, ale w jakiś sposób Skype nie rozpoznał tego i nadal używał mikrofonu wewnętrznego.

Aby to zadziałało, najpierw warto zainstalować pavucontrol. W pavucontrol otwórz kartę „Konfiguracja” i obserwuj, co dzieje się z poniższymi poleceniami, aby sprawdzić, czy wszystko działa zgodnie z przeznaczeniem.

Następnie z terminala wpisz:

pacmd

Stamtąd wpisz:

list-cards

Na wyjściu znajdź numer indeksu żądanego dźwięku USB (w moim przypadku było to „1”). Następnie spójrz na linie wymienione w sekcji „Profile” zarówno dla karty domyślnej, jak i karty USB. Powinny być takie same jak te wymienione w pavucontrol i mogą być takie jak „ouput: input + output”, „off” lub „input: analog-mono” itp. W wierszu poleceń pacmd polecenie set-card-profile <index number> <profile name>powinno się zmienić ustawienia w pavucontrol. Chcemy tutaj przełączyć wewnętrzny dźwięk z dupleksu na wyjście, a USB na wejście.

Po znalezieniu odpowiednich profili chcemy utworzyć polecenie uruchamiania, aby zmienić kilka ustawień zaraz po uruchomieniu. Aby utworzyć polecenie uruchamiania, otwórz myślnik i wyszukaj „aplikacje startowe”, następnie kliknij „dodaj”, a następnie wprowadź wybraną nazwę i odpowiednie polecenie poniżej.

Po próbach i błędach moje polecenie startowe wyglądało następująco:

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"

Objaśnienie: Odkryłem, że polecenie „uśpienie” było konieczne, oznacza to, że polecenie zostało wykonane po przerwie, i ustawiłem na 30 sekund (myślę, że może to być mniej, pobaw się z tym). Następnym poleceniem (po „&&”) jest uzyskanie domyślnego (wewnętrznego) profilu karty do przełączania z wejścia + wyjścia (dupleks, który jest domyślny) na tylko wyjście. Następne polecenie dotyczy karty dźwiękowej USB (w moim przypadku liczba to „1”), aby się wyłączyć. Ostatnie polecenie polega na ponownym włączeniu tej samej karty w trybie „wejście: analogowo-mono”

Być może będziesz musiał pobawić się tymi ustawieniami, aby znaleźć to, które działa.

Teraz, kiedy uruchamiam, mój mikrofon USB jest gotowy do użycia po 30 sekundach, a Skype używa właściwego mikrofonu.

Geoffrey
źródło
0

spróbuj tego, kliknij ikonę głośnika na górnym panelu, preferencje kliknięcia. tam możesz wybrać domyślną opcję wejścia dla swojego mikrofonu i prawdopodobnie zmienić konfigurację sprzętową, aby działała poprawnie.

helios66
źródło
1
Dziękuję za pomoc, ale właśnie to robię teraz. Nie widzę jednak żadnych sposobów, aby ustawić to ustawienie domyślne. Co jakiś czas będę musiał to robić ponownie, ponieważ ustawienie by się zmieniło.
Gizmoatwork