Bagaimana input audio saya selalu menjadi mikrofon webcam?

14

Setiap kali saya ingin menggunakan Skype, saya harus memilih preferensi suara. Dan di sana, putar audio-in ke " webcam " dan hapus centang tombol " bisu ". Cukup menyebalkan. Apakah ada cara untuk selalu menjaga konfigurasi yang sama?

Gizmoatwork
sumber
1
Saya punya masalah ini juga dengan quickit logitech. Setelah setiap reboot saya harus melalui preferensi dan meresetnya sebagai input default agar berfungsi. Saya pikir itu ada hubungannya dengan fakta bahwa perangkat usb dimuat setelah preferensi suara diatur sehingga pulsa atau alsa tidak "melihat" mic usb. Sayangnya karena "masalah" tidak benar-benar masalah hanya ketidaknyamanan itu tidak begitu penting bahwa saya ingin menyingsingkan lengan baju dan mulai menggali dan mengedit melalui file konfigurasi.

Jawaban:

14

Mengubah pengaturan default untuk PulseAudio

Saat menjalankan pulseaudio, semua pengaturan dapat ditentukan dengan meletakkan file konfigurasi khusus di .pulsedirektori tersembunyi di HOME Anda. Jika file ini belum ada di sana, Anda dapat menggunakan file standar dari /etc/pulse/sebagai templat. Sebagian besar entri memiliki penjelasan verbal dalam file-file ini.

  • ~/.pulse/default.pa memuat modul dan menetapkan standar
  • ~/.pulse/client.conf untuk mengkonfigurasi klien untuk server suara
  • ~/.pulse/daemon.conf untuk menentukan laju sampel dan buffer

Untuk menjadikan webcam Anda sumber default, kami perlu mengetahui nama dan nomor sumber ini dengan melihat daftar yang dihasilkan oleh perintah berikut di terminal:

pacmd list-sources

Kami kemudian mengedit baris berikut di ~/.pulse/default.pa:

set-default-source [name]

dan ganti [name]dengan nama atau nomor sumber untuk sumber yang diinginkan. Kami kemudian perlu memastikan bahwa sumber tidak dibisukan dengan menambahkan baris ini:

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

Beri nama atau indeks sumber Anda. Anda dapat menambahkan berbagai pengaturan lain yang dirujuk di PulseAudio Wiki (sekarang di halaman manual :)man pulse-cli-syntax .

Disarankan untuk terlebih dahulu menguji semua perintah melalui antarmuka baris perintah sebelum mengubah file konfigurasi. Ini dapat dibuka dengan pacmd di terminal

Takkat
sumber
Tidak ada default.pa di folder .pulse saya. Haruskah saya membuat file baru dengan satu baris: set-default-source x?
To Do
3
@Untuk melakukan pengaturan default /etc/pulse/default.pa. Gunakan file ini atau salin ke ~/.pulsesebelum mengedit.
Takkat
Demi kelengkapan: kita harus menulis sebagai nama perangkat input hal yang ditulis di dalam kawat sudut dari output pacmd list-sources. Yaitu dengan untuk perangkat saya itu set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Hi-Angel
@ Hi-Angel: terima kasih untuk itu - jawabannya berasal dari versi yang jauh lebih tua dari pulseaudio. Kita sekarang dapat menggunakan nama wastafel yang tepat.
Takkat
6

Saya setuju bahwa masalahnya adalah Pulseaudio tidak menetapkan perangkat USB sebagai default karena tidak ada saat pulsa dimulai.

Soo solusi saya untuk ini adalah untuk menghubungkan ke sistem yang melakukan pemberitahuan ketika perangkat USB yang terhubung ... UDEV!

BTW, instruksi ini sedikit funky, dan saya berasumsi bahwa Anda merasa nyaman melakukan hal-hal di baris perintah, dan menjadi pengguna root untuk memperbarui file udev, dan membuat skrip dapat dieksekusi.

Pertama, cari tahu hal-hal

Id USB

Langkah pertama adalah mencolokkan webcam Anda dan menemukan vendor ajaib dan nomor produk dengan mengetik

lsusb

Saya menggunakan Microsoft Lifecam, dan ditampilkan sebagai

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

bagian yang penting adalah 045e: 072d

Perangkat pulseaudio

Selanjutnya, saat webcam terhubung, cari tahu nama perangkat pulseaudio. Tipe

pacmd list-sources

Sekali lagi, saya mencari baris yang dimulai name:kemudian memiliki sesuatu tentang Microsoft Lifecam ... ini dia

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

jadi nama perangkat pulseaudio saya akan menjadi alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Aturan UDEV

Kemudian saya membuat aturan udev baru yang diaktifkan ketika perangkat USB dengan vendor = 045e dan produk = 072d dimasukkan. Untuk membuat aturan, buat file baru yang disebut /etc/udev/rules.d/SESUATU.rules (saya menelepon file saya /etc/udev/rules.d/95-webcam-mic.rules).

Masukkan baris ini ke dalam file

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

Ingatlah untuk mengganti ATTR {idVendor} dan ATTR {idProduct} dengan nilai untuk webcam Anda.

Apa aturan ini adalah menjalankan skrip untuk mengatur perangkat usb untuk input, yaitu RUN+="/usr/local/bin/webcam-mic"bagian.

Akhirnya, atur webcam untuk input

Waktu ikhtisar cepat. Setiap kali saya menghubungkan webcam saya, saya ingin menjalankan perintah

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

Tetapi perintah itu harus dijalankan seperti saya (pengguna yang menjalankan desktop), tetapi udev berjalan sebagai pengguna root - jadi ketika udev menjalankan perintah saya, saya perlu mengubahnya ke pengguna saya kemudian jalankan perintah.

Jadi kami memiliki 2 opsi.

  1. Cepat dan kotor . Buat menjalankan aturan udev su james -c pacmd set-default-source... ini sooo salah. Aku bahkan tidak bisa menyelesaikan mengetik perintah. Bagaimana jika Anda mengubah webcam? Bagaimana jika Anda menginstal ini untuk pengguna lain?

  2. Pembersih sedikit . Jalankan skrip yang membaca file default yang memiliki nama perangkat pulseaudio, dan nama pengguna Anda di dalamnya. Jika Anda ingin file-file itu ada di GitHub. Pertama skripnya /usr/local/bin/webcam-mic. File default /etc/default/webcam-michanya perlu mendefinisikan 2 variabel shell, sesuai komentar di intinya. Masukkan skrip ke dalam /usr/local/bin/dan membuatnya dapat dieksekusi. Kemudian masukkan file default /etc/defaults/dan edit untuk menggunakan nama pengguna Anda dan perangkat pulseaudio dari sebelumnya.

Semoga berhasil!

James Mitchell
sumber
Setiap kesempatan Anda dapat mengunggah skrip-skrip itu lagi; mereka tampaknya telah menghilang dari pastebin?
ej159
Saya telah memasukkan skrip ke intisari pada GitHub, dan memperbarui jawabannya.
James Mitchell
2

Solusi oleh Takkat tidak berfungsi untuk saya, ini solusi saya untuk siapa pun yang masih memiliki masalah dengan ini.

Ada dua masalah bagi saya dengan solusi oleh Takkat. Pertama, saya menyadari bahwa perlu ada penundaan setelah startup sebelum beralih ke mikrofon dapat terjadi (saya menggunakan perintah 'sleep' dalam solusi saya di bawah). Juga, perintah 'set-default-source' berfungsi untuk mengaktifkan mikrofon USB, tetapi entah bagaimana Skype tidak mengenali ini dan terus menggunakan mikrofon internal.

Agar ini berfungsi, pertama berguna untuk menginstal pavucontrol. Di pavucontrol, buka tab 'Konfigurasi', dan amati apa yang terjadi dengan perintah di bawah ini untuk memeriksa apakah semuanya berfungsi sebagaimana dimaksud.

Kemudian, dari terminal masukkan:

pacmd

Dari sana, masukkan:

list-cards

Dalam output, cari nomor indeks audio USB yang Anda inginkan (dalam kasus saya, ini '1'). Kemudian lihat baris yang tercantum di bawah 'profil' untuk kartu default dan kartu USB. Ini harus sama dengan yang terdaftar di pavucontrol, dan bisa berupa 'ouput: input + output', 'off', atau 'input: analog-mono' dll. Masih di baris perintah pacmd, perintah set-card-profile <index number> <profile name>harus berubah pengaturan di pavucontrol. Apa yang ingin kita lakukan di sini adalah untuk mengganti audio internal dari duplex ke output saja, dan USB ke input.

Setelah menemukan profil yang sesuai, kami ingin membuat perintah startup untuk mengubah beberapa pengaturan setelah startup. Untuk membuat perintah startup, buka tanda hubung dan cari 'aplikasi startup', lalu klik 'tambah', lalu masukkan nama pilihan Anda dan perintah yang sesuai di bawah ini.

Setelah coba-coba, perintah memulai saya akhirnya tampak seperti ini:

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"

Penjelasan: Saya menemukan bahwa perintah 'sleep' diperlukan, ini berarti bahwa perintah dijalankan setelah jeda, yang saya setel ke 30 detik (saya pikir ini bisa kurang, bermain-main dengan ini). Perintah selanjutnya (setelah '&&') adalah untuk mendapatkan profil kartu default (internal) untuk beralih dari input + output (duplex, yang merupakan default) ke hanya keluaran. Perintah selanjutnya adalah untuk kartu suara USB (dalam kasus saya, angkanya adalah '1') untuk mematikan. Perintah terakhir adalah untuk kartu yang sama ini untuk dihidupkan kembali dalam mode 'input: analog-mono'

Anda mungkin harus bermain-main dengan pengaturan ini, untuk menemukan yang berfungsi.

Sekarang ketika saya mulai, mikrofon USB saya siap digunakan setelah 30 detik, dan Skype menggunakan mikrofon yang benar.

geoffrey
sumber
0

coba ini, klik pada ikon speaker di panel atas Anda, preferensi klik. di sana Anda dapat memilih opsi input default untuk mikrofon Anda dan mungkin mengubah beberapa konfigurasi perangkat keras agar berfungsi ok.

helios66
sumber
1
Terima kasih atas bantuan Anda, tetapi itulah yang saya lakukan sekarang. Namun, saya tidak melihat cara untuk menjadikan ini pengaturan default. Sesekali, saya harus melakukannya lagi karena pengaturan akan berubah.
Gizmoatwork