Come può il mio ingresso audio essere sempre il microfono della webcam?


14

Ogni volta che voglio usare Skype, devo andare nelle preferenze audio. E lì, trasforma l'audio in " webcam " e deseleziona il pulsante " mute ". È abbastanza fastidioso. C'è un modo per mantenere sempre la stessa configurazione?


1
Ho questo problema anche con una quickacam logitech. Dopo ogni riavvio, devo passare attraverso le preferenze e ripristinarlo come input predefinito affinché funzioni. Penso che abbia qualcosa a che fare con il fatto che i dispositivi USB vengono caricati dopo che le preferenze audio sono state impostate in modo che impulso o alsa non "vedano" il microfono USB. Sfortunatamente perché il "problema" non è in realtà un problema, solo un inconveniente non è così importante che voglio rimboccarmi le maniche della camicia e iniziare a scavare e modificare attraverso i file di configurazione.

Risposte:


14

Modifica delle impostazioni predefinite per PulseAudio

Quando si esegue pulseaudio è possibile definire tutte le impostazioni inserendo i file di configurazione personalizzati nella .pulsedirectory nascosta nella HOME. Se questi file non esistono ancora, è possibile utilizzare i file standard /etc/pulse/come modello. La maggior parte delle voci ha spiegazioni verbali in questi file.

  • ~/.pulse/default.pa per caricare i moduli e definire i valori predefiniti
  • ~/.pulse/client.conf per configurare un client per il server audio
  • ~/.pulse/daemon.conf per definire frequenze di campionamento e buffer

Per rendere la tua webcam la fonte predefinita dobbiamo conoscere il nome e il numero di questa fonte guardando l'elenco prodotto dal seguente comando in un terminale:

pacmd list-sources

Quindi modifichiamo la seguente riga in ~/.pulse/default.pa:

set-default-source [name]

e sostituisci [name]con il nome o il numero della fonte per la fonte desiderata. Dobbiamo quindi assicurarci che l'origine sia disattivata aggiungendo questa riga:

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

Dai il nome o l'indice della tua fonte. È possibile aggiungere una varietà di altre impostazioni a cui si fa riferimento nel Wiki PulseAudio (ora nella pagina man:) man pulse-cli-syntax.

Si consiglia di testare innanzitutto tutti i comandi tramite l'interfaccia della riga di comando prima di modificare i file di configurazione. Questo può essere aperto con pacmd in un terminale


Non c'è default.pa nella mia cartella .pulse. Devo creare un nuovo file con una riga: set-default-source x?
Da fare il

3
@ToDo sono presenti le impostazioni predefinite /etc/pulse/default.pa. Utilizzare questo file o copiarlo ~/.pulseprima della modifica.
Takkat,

Per completezza: si deve scrivere come nome di un dispositivo di input la cosa scritta all'interno di parentesi angolari di output di pacmd list-sources. Vale a dire con il mio dispositivo lo era set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Ciao Angelo

@ Ciao Angelo: grazie per questo - la risposta è arrivata da una versione molto più vecchia di pulseaudio. Ora possiamo usare il nome proprio di un lavandino.
Takkat,

6

Sono d'accordo che il problema è che Pulseaudio non imposta un dispositivo USB come predefinito perché non è presente all'avvio dell'impulso.

Soo la mia soluzione a questo è di agganciare nel sistema che fa avviso quando si collega un dispositivo USB ... UDEV!

A proposito, queste istruzioni sono leggermente funky e presumo che tu sia a tuo agio a fare cose dalla riga di comando e diventare l'utente root per aggiornare i file udev e rendere eseguibili gli script.

Per prima cosa, scopri le cose

ID USB

Il primo passo è collegare la tua webcam e trovare il fornitore magico e i numeri di prodotto digitando

lsusb

Sto usando un Microsoft Lifecam, e mostra come

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

la parte importante è 045e: 072d

Dispositivo Pulseaudio

Quindi, mentre la webcam è collegata, scopri il nome del dispositivo pulseaudio. genere

pacmd list-sources

Ancora una volta, sto cercando la linea che inizia name:quindi ha qualcosa su una Lifecam Microsoft ... eccola qui

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

così sarà il mio nome del dispositivo pulseaudio alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Regole UDEV

Quindi ho creato una nuova regola udev che viene attivata quando viene inserito un dispositivo USB con fornitore = 045e e prodotto = 072d. Per creare una regola, crea un nuovo file chiamato /etc/udev/rules.d/SOMETHING.rules (ho chiamato il mio file /etc/udev/rules.d/95-webcam-mic.rules).

Inserisci questa riga nel file

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

Ricorda di sostituire ATTR {idVendor} e ATTR {idProduct} con i valori per la tua webcam.

Ciò che questa regola fa è eseguire uno script per impostare il dispositivo USB per l'input, ovvero RUN+="/usr/local/bin/webcam-mic" parte.

Infine, imposta la webcam per l'input

Tempo di visione rapida. Ogni volta che collego la mia webcam voglio eseguire il comando

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

Ma il comando deve essere eseguito come me (l'utente che esegue il desktop), ma udev viene eseguito come utente root, quindi quando udev esegue il mio comando ne ho bisogno per passare al mio utente quindi eseguire il comando.

Quindi abbiamo 2 opzioni.

  1. Veloce e sporco . Rendi la regola udev in esecuzione su james -c pacmd set-default-source... questo è talmente sbagliato che non riesco nemmeno a digitare il comando. E se cambi webcam? E se lo installi per un altro utente?

  2. Leggermente più pulito . Esegui uno script che legge un file predefinito con il nome del dispositivo pulseaudio e il tuo nome utente al suo interno. Se vuoi che i file siano su GitHub. Prima la sceneggiatura /usr/local/bin/webcam-mic. Il file delle impostazioni predefinite /etc/default/webcam-micdeve solo definire le 2 variabili della shell, come da commento nella sintesi. Inserisci lo script /usr/local/bin/e rendilo eseguibile. Quindi inserisci il file delle impostazioni predefinite /etc/defaults/e modificalo per utilizzare il tuo nome utente e il dispositivo pulseaudio in precedenza.

In bocca al lupo!


Ogni possibilità che tu possa caricare di nuovo quegli script; sembrano essere scomparsi dal pastebin?
ej159,

Ho inserito la sceneggiatura su GitHub e ho aggiornato la risposta.
James Mitchell,

2

La soluzione di Takkat non funzionava per me, ecco la mia soluzione per chiunque abbia ancora problemi con questo.

C'erano due problemi per me con la soluzione di Takkat. Innanzitutto, mi sono reso conto che ci doveva essere un ritardo dopo l'avvio prima che possa avvenire il passaggio al microfono (utilizzo il comando "sleep" nella mia soluzione di seguito). Inoltre, il comando 'set-default-source' funzionava per accendere il microfono USB, ma in qualche modo Skype non lo riconosceva e continuava a usare il microfono interno.

Affinché ciò funzioni, è innanzitutto utile installare pavucontrol. In pavucontrol, apri la scheda 'Configurazione' e osserva cosa succede con i comandi seguenti per verificare che le cose funzionino come previsto.

Quindi, da un terminale inserire:

pacmd

Da lì, inserisci:

list-cards

Nell'output, trova il numero di indice dell'audio USB desiderato (nel mio caso, era "1"). Dai un'occhiata alle linee elencate sotto 'profili' sia per la scheda predefinita che per la scheda USB. Dovrebbero essere uguali a quelli elencati in pavucontrol e possono essere simili a 'ouput: input + output', 'off' o 'input: analog-mono' ecc. Sempre nella riga di comando pacmd, il comando set-card-profile <index number> <profile name>dovrebbe cambiare le impostazioni in pavucontrol. Quello che vogliamo fare qui è cambiare l'audio interno dal duplex solo all'uscita e dall'USB all'input.

Una volta trovati i profili appropriati, vogliamo creare un comando di avvio per modificare alcune impostazioni subito dopo l'avvio. Per creare un comando di avvio, apri il trattino e cerca "applicazioni di avvio", quindi fai clic su "Aggiungi", quindi inserisci un nome a tua scelta e il comando appropriato di seguito.

Dopo tentativi ed errori, il mio comando di avvio è finito così:

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"

Spiegazione: Ho scoperto che il comando 'sleep' era necessario, ciò significa che il comando viene eseguito dopo una pausa, che ho impostato su 30 secondi (penso che questo possa essere inferiore, giocarci attorno). Il comando successivo (dopo '&&') è di far passare il profilo della scheda (interno) predefinito da input + output (duplex, che è il default) solo all'output. Il comando successivo è per la scheda audio USB (nel mio caso, il numero è '1') da spegnere. L'ultimo comando è per riaccendere la stessa scheda nella modalità 'input: analog-mono'

Potrebbe essere necessario giocare con queste impostazioni, per trovare quella che funziona.

Ora quando avvio, il mio microfono USB è pronto per l'uso dopo 30 secondi e Skype utilizza il microfono corretto.


0

prova questo, fai clic sull'icona dell'altoparlante sul pannello superiore, le preferenze di clic. lì puoi selezionare un'opzione di input predefinita per il tuo microfono e probabilmente cambiare alcune configurazioni hardware per farlo funzionare bene.


1
Grazie per il tuo aiuto, ma è quello che sto facendo in questo momento. Tuttavia, non vedo alcun modo per rendere questa impostazione predefinita. Ogni tanto dovrò farlo di nuovo perché l'impostazione sarebbe cambiata.
Gizmoatwork
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.