อินพุตเสียงของฉันเป็นไมโครโฟนเว็บแคมได้อย่างไร?


14

ทุกครั้งที่ฉันต้องการใช้ Skype ฉันต้องไปที่การตั้งค่าเสียง และให้เปลี่ยนเสียงเป็น " เว็บแคม " และยกเลิกการทำเครื่องหมายปุ่ม " ปิดเสียง " มันค่อนข้างน่ารำคาญ มีวิธีที่จะทำให้การกำหนดค่าเดียวกันเสมอหรือไม่


1
ฉันมีปัญหานี้เช่นกันกับ logac quickacam หลังจากรีบูตทุกครั้งฉันต้องผ่านการตั้งค่าและรีเซ็ตเป็นอินพุตเริ่มต้นเพื่อให้สามารถใช้งานได้ ฉันคิดว่ามันมีบางอย่างเกี่ยวข้องกับความจริงที่ว่าอุปกรณ์ usb ถูกโหลดหลังจากการตั้งค่าเสียงถูกตั้งค่าไว้ดังนั้นพัลส์หรืออัลซาไม่ "เห็น" ไมโครโฟน usb น่าเสียดายเนื่องจาก "ปัญหา" ไม่ใช่ปัญหาความไม่สะดวกมันไม่สำคัญเลยที่ฉันต้องการพับแขนเสื้อและเริ่มขุดและแก้ไขผ่านไฟล์ปรับแต่ง

คำตอบ:


14

การเปลี่ยนการตั้งค่าเริ่มต้นสำหรับ PulseAudio

เมื่อเรียกใช้ pulseaudio การตั้งค่าทั้งหมดสามารถกำหนดได้โดยใส่ไฟล์กำหนดค่าเองใน.pulseไดเรกทอรีที่ซ่อนอยู่ในหน้าแรกของคุณ หากไฟล์เหล่านี้ยังไม่มีอยู่คุณสามารถใช้ไฟล์มาตรฐาน/etc/pulse/เป็นเทมเพลตได้ รายการส่วนใหญ่มีคำอธิบาย verbous ในไฟล์เหล่านี้

  • ~/.pulse/default.pa เพื่อโหลดโมดูลและกำหนดค่าเริ่มต้น
  • ~/.pulse/client.conf เพื่อกำหนดค่าไคลเอนต์สำหรับเซิร์ฟเวอร์เสียง
  • ~/.pulse/daemon.conf เพื่อกำหนดอัตราตัวอย่างและบัฟเฟอร์

ในการทำให้เว็บแคมของคุณเป็นแหล่งเริ่มต้นเราจำเป็นต้องทราบชื่อและหมายเลขของแหล่งข้อมูลนี้โดยดูจากรายการที่สร้างโดยคำสั่งต่อไปนี้ในเทอร์มินัล:

pacmd list-sources

จากนั้นเราจะแก้ไขบรรทัดต่อไปนี้ใน~/.pulse/default.pa:

set-default-source [name]

และแทนที่[name]ด้วยชื่อหรือหมายเลขแหล่งที่มาสำหรับแหล่งที่ต้องการ จากนั้นเราต้องตรวจสอบให้แน่ใจว่าแหล่งที่มานั้นไม่ได้ถูกปิดเสียงโดยเพิ่มบรรทัดนี้

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

ตั้งชื่อหรือดัชนีของแหล่งที่มาของคุณ คุณสามารถเพิ่มความหลากหลายของการตั้งค่าอื่น ๆ ที่ได้รับการอ้างอิงในPulseAudio วิกิพีเดีย (ตอนนี้บนหน้าคน: man pulse-cli-syntax)

ขอแนะนำให้ทดสอบคำสั่งทั้งหมดก่อนผ่านทางอินเตอร์เฟสบรรทัดคำสั่งก่อนเปลี่ยนไฟล์กำหนดค่า สามารถเปิดได้ด้วย pacmd เทอร์มินัล


ไม่มี default.pa ในโฟลเดอร์. ชีพจรของฉัน ฉันควรสร้างไฟล์ใหม่ด้วยหนึ่งบรรทัด: set-default-source x หรือไม่
ถึงทำ

3
@ToDo /etc/pulse/default.paเริ่มต้นการตั้งค่าที่อยู่ใน ใช้ไฟล์นี้หรือคัดลอกไป~/.pulseก่อนแก้ไข
Takkat

เพื่อประโยชน์ของความสมบูรณ์: pacmd list-sourcesหนึ่งต้องเขียนเป็นชื่ออุปกรณ์ป้อนสิ่งที่เขียนอยู่ภายในวงเล็บมุมของการส่งออกของ set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-monคือมีสำหรับอุปกรณ์ของฉันมันเป็น
Hi-Angel

@ Hi-Angel: ขอบคุณสำหรับคำตอบ - คำตอบมาจาก pulseaudio เวอร์ชั่นเก่ากว่ามาก ตอนนี้เราสามารถใช้ชื่อที่เหมาะสมของอ่างล้างจาน
Takkat

6

ฉันยอมรับว่าปัญหาคือ Pulseaudio ไม่ได้ตั้งค่าอุปกรณ์ USB เป็นค่าเริ่มต้นเนื่องจากไม่มีอยู่เมื่อเริ่มการเต้นของชีพจร

ซูโซลูชั่นของฉันคือการขอเข้าสู่ระบบที่ไม่แจ้งให้ทราบเมื่อมีการเชื่อมต่ออุปกรณ์ USB ... UDEV!

BTW คำแนะนำเหล่านี้ขี้ขลาดเล็กน้อยและฉันสมมติว่าคุณสบาย ๆ ที่จะทำสิ่งต่าง ๆ ที่บรรทัดคำสั่งและกลายเป็นผู้ใช้รูทเพื่ออัปเดตไฟล์ udev และทำให้สคริปต์ทำงานได้

ก่อนอื่นหาข้อมูล

รหัส USB

ขั้นตอนแรกคือเสียบเว็บแคมของคุณและค้นหาผู้จำหน่ายมายากลและหมายเลขผลิตภัณฑ์โดยพิมพ์

lsusb

ฉันใช้ Microsoft Lifecam และมันแสดงเป็น

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

ส่วนที่สำคัญคือ045e: 072d

อุปกรณ์ Pulseaudio

ถัดไปขณะที่เว็บแคมเชื่อมต่ออยู่ให้ค้นหาชื่ออุปกรณ์ pulseaudio ชนิด

pacmd list-sources

อีกครั้งฉันกำลังมองหาบรรทัดที่เริ่มname:แล้วมีบางสิ่งบางอย่างเกี่ยวกับ Microsoft Lifecam ... ที่นี่เป็น

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

ดังนั้นชื่ออุปกรณ์ pulseaudio ของฉันจะเป็น alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

กฎ UDEV

จากนั้นฉันสร้างกฎ udev ใหม่ซึ่งจะใช้งานเมื่ออุปกรณ์ USB ที่มีผู้ขาย = 045e และผลิตภัณฑ์ = 072d ถูกแทรก หากต้องการสร้างกฎให้สร้างไฟล์ใหม่ชื่อ/etc/udev/rules.d/SOMETHING.rules (ฉันเรียกว่าไฟล์ของฉัน/etc/udev/rules.d/95-webcam-mic.rules)

ใส่บรรทัดนี้ลงในไฟล์

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

อย่าลืมแทนที่ATTR {idVendor}และATTR {idProduct}ด้วยค่าสำหรับเว็บแคมของคุณ

สิ่งที่กฎนี้ทำคือเรียกใช้สคริปต์เพื่อตั้งค่าอุปกรณ์ usb สำหรับอินพุตนั่นคือRUN+="/usr/local/bin/webcam-mic"ส่วนหนึ่ง

ในที่สุดตั้งเว็บแคมสำหรับการป้อนข้อมูล

เวลาภาพรวมด่วน ทุกครั้งที่ฉันเชื่อมต่อเว็บแคมฉันต้องการเรียกใช้คำสั่ง

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

แต่คำสั่งจำเป็นต้องเรียกใช้ในฐานะฉัน (ผู้ใช้ที่รันเดสก์ท็อป) แต่ udev รันในฐานะผู้ใช้รูท - ดังนั้นเมื่อ udev รันคำสั่งของฉันฉันต้องการให้เปลี่ยนผู้ใช้ของฉันจากนั้นเรียกใช้คำสั่ง

ดังนั้นเราจึงมี 2 ตัวเลือก

  1. รวดเร็วและสกปรก ทำให้กฎ udev ทำงานsu james -c pacmd set-default-source... นี่เป็นสิ่งที่ผิดฉันไม่สามารถพิมพ์คำสั่งให้เสร็จได้ ถ้าคุณเปลี่ยนเว็บแคม ถ้าคุณติดตั้งสิ่งนี้กับผู้ใช้รายอื่น

  2. ทำความสะอาดเล็กน้อย เรียกใช้สคริปต์ที่อ่านไฟล์ค่าเริ่มต้นซึ่งมีชื่ออุปกรณ์ pulseaudio และชื่อผู้ใช้ของคุณ ถ้าคุณต้องการไฟล์ที่อยู่ใน GitHub /usr/local/bin/webcam-micแรกสคริปต์ ไฟล์ค่าเริ่มต้น/etc/default/webcam-micเพียงแค่ต้องกำหนดตัวแปรเปลือก 2 ตามความคิดเห็นในส่วนสำคัญ ใส่สคริปต์ลงใน/usr/local/bin/และทำให้มันปฏิบัติ จากนั้นใส่ไฟล์ค่าเริ่มต้นลงใน/etc/defaults/และแก้ไขเพื่อใช้ชื่อผู้ใช้และอุปกรณ์ pulseaudio ของคุณก่อนหน้านี้

โชคดี!


โอกาสใด ๆ ที่คุณสามารถอัปโหลดสคริปต์เหล่านั้นอีกครั้ง; ดูเหมือนว่าพวกเขาจะหายไปจาก pastebin?
ej159

ฉันใส่สคริปต์ลงในส่วนสำคัญใน GitHub และปรับปรุงคำตอบ
James Mitchell

2

การแก้ปัญหาโดย Takkat ไม่ได้ผลสำหรับฉันนี่คือคำตอบของฉันสำหรับทุกคนที่ยังมีปัญหากับสิ่งนี้

มีสองประเด็นที่ฉันต้องแก้ปัญหาโดย Takkat ก่อนอื่นฉันตระหนักว่าต้องมีความล่าช้าหลังจากเริ่มต้นก่อนที่จะเปลี่ยนเป็นไมโครโฟนได้ (ฉันใช้คำสั่ง 'sleep' ในโซลูชันด้านล่าง) นอกจากนี้คำสั่ง 'set-default-source' กำลังทำงานเพื่อเปิดไมโครโฟน USB แต่อย่างใด Skype ไม่รู้จักและยังใช้ไมโครโฟนภายในต่อไป

เพื่อให้ใช้งานได้อันดับแรกจะมีประโยชน์ในการติดตั้ง pavucontrol ใน pavucontrol ให้เปิดแท็บ 'การกำหนดค่า' และสังเกตสิ่งที่เกิดขึ้นกับคำสั่งด้านล่างเพื่อตรวจสอบสิ่งที่ทำงานได้ตามที่ตั้งใจ

จากนั้นป้อนเทอร์มินัล:

pacmd

จากนั้นป้อน:

list-cards

ในผลลัพธ์ค้นหาหมายเลขดัชนีของเสียง USB ที่คุณต้องการ (ในกรณีของฉันนี่คือ '1') จากนั้นดูบรรทัดที่ระบุไว้ภายใต้ 'ส่วนกำหนดค่า' สำหรับทั้งการ์ดเริ่มต้นและการ์ด USB สิ่งเหล่านี้ควรเหมือนกับที่อยู่ในรายการ pavucontrol และอาจเป็นอะไรเช่น 'ouput: input + output', 'off' หรือ 'input: analog-mono' เป็นต้นและยังอยู่ในบรรทัดคำสั่ง pacmd คำสั่งset-card-profile <index number> <profile name>ควรเปลี่ยน การตั้งค่าใน pavucontrol สิ่งที่เราต้องการทำที่นี่คือการสลับเสียงภายในจากดูเพล็กซ์เป็นเอาท์พุทเท่านั้นและ USB เป็นอินพุท

เมื่อพบโปรไฟล์ที่เหมาะสมแล้วเราต้องการสร้างคำสั่งเริ่มต้นเพื่อเปลี่ยนการตั้งค่าเล็กน้อยหลังจากเริ่มต้น หากต้องการสร้างคำสั่งเริ่มต้นให้เปิดประและค้นหา 'แอปพลิเคชันเริ่มต้น' จากนั้นคลิก 'เพิ่ม' จากนั้นป้อนชื่อที่คุณเลือกและคำสั่งที่เหมาะสมด้านล่าง

หลังจากลองผิดลองถูกแล้วคำสั่ง start up ของฉันก็ดูเป็นแบบนี้:

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"

คำอธิบาย: ฉันพบว่าจำเป็นต้องใช้คำสั่ง 'sleep' ซึ่งหมายความว่าคำสั่งจะถูกดำเนินการหลังจากหยุดชั่วคราวซึ่งฉันตั้งไว้ที่ 30 วินาที (ฉันคิดว่านี่น่าจะน้อยกว่า คำสั่งถัดไป (หลังจาก '&&') คือการรับโปรไฟล์การ์ดเริ่มต้น (ภายใน) เพื่อสลับจากอินพุต + เอาต์พุต (ดูเพล็กซ์ซึ่งเป็นค่าเริ่มต้น) เป็นเอาต์พุตเท่านั้น คำสั่งถัดไปสำหรับการ์ดเสียง USB (ในกรณีของฉันหมายเลขคือ '1') เพื่อปิด คำสั่งสุดท้ายสำหรับการ์ดใบเดียวกันนี้เพื่อเปิดกลับในโหมด 'อินพุต: analog-mono'

คุณอาจต้องเล่นกับการตั้งค่าเหล่านี้เพื่อหาคนที่ทำงาน

ตอนนี้เมื่อฉันเริ่มต้นไมโครโฟน USB ของฉันพร้อมใช้งานหลังจาก 30 วินาทีและ Skype ใช้ไมโครโฟนที่ถูกต้อง


0

ลองสิ่งนี้คลิกที่ไอคอนลำโพงที่แผงด้านบนของคุณการตั้งค่าการคลิก คุณสามารถเลือกตัวเลือกอินพุตเริ่มต้นสำหรับไมโครโฟนของคุณและอาจเปลี่ยนการกำหนดค่าฮาร์ดแวร์บางอย่างเพื่อให้ใช้ได้


1
ขอบคุณสำหรับความช่วยเหลือ แต่นั่นคือสิ่งที่ฉันกำลังทำอยู่ตอนนี้ อย่างไรก็ตามฉันไม่เห็นวิธีใด ๆ ในการตั้งค่าเริ่มต้น ทุก ๆ คราวฉันจะต้องทำอีกครั้งเพราะการตั้งค่าจะเปลี่ยนไป
Gizmoatwork
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.