Score:1

การสลับอุปกรณ์เสียงจะทำให้เอาต์พุตเสียงออปติคอลหยุดทำงาน

ธง kr

ฉันกำลังพยายามสลับระหว่างเอาต์พุตเสียงของหูฟังและลำโพงอย่างรวดเร็ว ทั้งสองเชื่อมต่อกับเมนบอร์ดของฉันซึ่งมีไฟล์ ไลน์เอาท์ และ ก ออปติคัลออดิโอเอาท์ ไลน์. ฉันต้องการทำสิ่งนี้ผ่านสองคำสั่งเพื่อให้ฉันสามารถเพิ่มเป็นมาโคร / ปุ่มลัด

  • ลำโพง -> ออปติคัลออดิโอ
  • หูฟัง -> สายออก

ฉันสามารถเปลี่ยนจากลำโพงเป็นหูฟังได้สำเร็จโดยใช้ การตั้งค่า > เสียง > เอาท์พุต เมนูที่แสดงรายการตัวเลือกเสียง 4 รายการที่ฉันเสียบไว้ได้สำเร็จ อีกสองรายการคือการเชื่อมต่อ DP/HDMI ผ่านกราฟิกการ์ด หากตอนนี้ฉันพยายามเปลี่ยนกลับไปใช้ลำโพงจากหูฟัง จะไม่มีเสียงออกมา ฉันมี 'วิธีแก้ปัญหา' ที่ฉันหยุดเสียงทั้งหมดชั่วคราว สลับไปที่เอาต์พุตกราฟิกการ์ดตัวใดตัวหนึ่ง รอ 5 วินาที เปลี่ยนไปใช้ลำโพง รอ 5 วินาที จากนั้นเล่นเพลง และจนถึงขณะนี้สามารถแก้ไขปัญหาได้อย่างน่าเชื่อถือ

ฉันได้พยายามที่จะใช้ แพ็คเติ้ล เพื่อเปลี่ยนผลลัพธ์ซึ่งฉันคิดว่าน่าจะเป็น อ่างล้างมือแต่ฉันมีอ่างล้างจานเพียงสองอ่างเท่านั้น:

â ~ รายการ pactl สั้นลง
55 alsa_output.pci-0000_2d_00.4.iec958-สเตอริโอ PipeWire s32le 2ch 48000Hz RUNNING
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz ระงับ

นี่คือการแสดงขณะฟังเสียงจากลำโพง ด้านล่างคือขณะเปิดเสียงที่หูฟัง

â ~ รายการ pactl สั้นลง
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz ระงับ
55 alsa_output.pci-0000_2d_00.4.analog-stereo PipeWire s32le 2ch 48000Hz กำลังทำงาน

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

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-สเตอริโอ อนาล็อก-สเตอริโอ        
ความล้มเหลว: ไม่มีเอนทิตีดังกล่าว

ฉันค่อนข้างสับสนเกี่ยวกับวิธีทำให้สิ่งนี้ใช้งานได้ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

ด้านล่างนี้เป็นข้อมูลบางอย่างที่ฉันเชื่อว่าจะมีความสำคัญ ระบบปฏิบัติการ: อูบุนตู 21.10

ด้านล่างนี้คือผลลัพธ์ของ ข้อมูลข้อตกลง โดยลบชื่อผู้ใช้ของฉัน:

สตริงเซิร์ฟเวอร์: /run/user/1000/pulse/native
เวอร์ชันโปรโตคอลห้องสมุด: 35
เซิร์ฟเวอร์โปรโตคอลเวอร์ชัน: 35
เป็นคนท้องถิ่น: ใช่
ดัชนีลูกค้า: 68
ขนาดกระเบื้อง: 65472
ชื่อผู้ใช้: {USER}
ชื่อโฮสต์: อูบุนตู
ชื่อเซิร์ฟเวอร์: PulseAudio (บน PipeWire 0.3.38)
เวอร์ชันเซิร์ฟเวอร์: 15.0.0
ข้อกำหนดตัวอย่างเริ่มต้น: float32le 2ch 48000Hz
แผนที่ช่องเริ่มต้น: หน้า-ซ้าย, หน้า-ขวา
ซิงก์เริ่มต้น: alsa_output.pci-0000_2d_00.4.iec958-stereo
แหล่งที่มาเริ่มต้น: alsa_input.usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera_SN0001-02.analog-stereo
คุกกี้: bf70:5e64

แก้ไข

จากคำตอบและความคิดเห็นของ @kanehekili ดูเหมือนว่าฉันต้องการตั้งค่า อ่างล้างพอร์ต. วิธีทำก็คือใช้ pactl set-sink-port {SINK_NAME} {PORT_NAME} อย่างไรก็ตามพอร์ตของฉันไม่มีอยู่ตาม รายการ pactl จม:

â ~ รายการ pactl จม
อ่างล้างจาน #47
    รัฐ: วิ่ง
    ชื่อ: alsa_output.pci-0000_2d_00.4.iec958-สเตอริโอ
    คำอธิบาย: Starship/Matisse HD Audio Controller Digital Stereo (IEC958)
    ไดรเวอร์: PipeWire
    ตัวอย่างสเปค: s32le 2ch 48000Hz
    แผนที่ช่อง: หน้า-ซ้าย, หน้า-ขวา
    โมดูลเจ้าของ: 4294967295
    ปิดเสียง: ไม่
    ระดับเสียง: ด้านหน้า-ซ้าย: 28524 / 44% / -21.68 dB, ด้านหน้า-ขวา: 28524 / 44% / -21.68 dB
            ยอดคงเหลือ 0.00
    ปริมาณฐาน: 65536 / 100% / 0.00 dB
    แหล่งที่มาของจอภาพ: alsa_output.pci-0000_2d_00.4.iec958-stereo.monitor
    เวลาแฝง: 0 usec, กำหนดค่า 0 usec
    ค่าสถานะ: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY SET_FORMATS 
    คุณสมบัติ:
        object.path = "alsa:pcm:1:iec958:1:playback"
        api.alsa.path = "iec958:1"
        api.alsa.pcm.card = "1"
        api.alsa.pcm.stream = "เล่น"
        audio.channels = "2"
        audio.position = "FL,FR"
        อุปกรณ์ เส้นทาง = "1"
        alsa. resolution_bits = "16"
        device.api = "อัลซ่า"
        device.class = "เสียง"
        alsa.class = "ทั่วไป"
        alsa.subclass = "ผสมทั่วไป"
        alsa.name = "ALCS1200A ดิจิตอล"
        alsa.id = "ALCS1200A ดิจิตอล"
        alsa.subdevice = "0"
        alsa.subdevice_name = "อุปกรณ์ย่อย #0"
        alsa.device = "1"
        alsa.card = "1"
        alsa.card_name = "HD-เสียงทั่วไป"
        alsa.long_card_name = "HD-Audio Generic ที่ 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "iec958-สเตอริโอ"
        device.profile.description = "สเตอริโอดิจิตอล (IEC958)"
        card.profile.device = "11"
        device.id = "41"
        ชื่อโรงงาน = "api.alsa.pcm.sink"
        ลำดับความสำคัญไดรเวอร์ = "672"
        ลำดับความสำคัญ เซสชัน = "672"
        media.class = "เสียง/ซิงก์"
        node.nick = "HD-Audio ทั่วไป"
        node.name = "alsa_output.pci-0000_2d_00.4.iec958-สเตอริโอ"
        device.description = "Starship/Matisse HD Audio Controller สเตอริโอดิจิตอล (IEC958)"
        device.icon_name = "การ์ดเสียง-iec958"
        device.bus = "pci"
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = "เท็จ"
        โรงงาน.id = "18"
        client.id = "32"
        node.driver = "จริง"
        factory.mode = "ผสาน"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "47"
        node.max-latency = "8192/48000"
    พอร์ต:
        เอาต์พุตสเตอริโอ iec958: เอาต์พุตดิจิตอล (S/PDIF) (ประเภท: SPDIF, ลำดับความสำคัญ: 0, ไม่ทราบความพร้อมใช้งาน)
    พอร์ตที่ใช้งาน: iec958-สเตอริโอเอาต์พุต
    รูปแบบ:
        พีซีเอ็ม

เมื่อฉันพยายามเปลี่ยนพอร์ต sink ฉันพบกับข้อผิดพลาด

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-สเตอริโอ อนาล็อก-สเตอริโอ        
ความล้มเหลว: ไม่มีเอนทิตีดังกล่าว

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

â ~ รายการ pactl จม
อ่างล้างจาน #47
    รัฐ: วิ่ง
    ชื่อ: alsa_output.pci-0000_2d_00.4.analog-stereo
    รายละเอียด: Starship/Matisse HD Audio Controller อะนาล็อกสเตอริโอ
    ไดรเวอร์: PipeWire
    ตัวอย่างสเปค: s32le 2ch 48000Hz
    แผนที่ช่อง: หน้า-ซ้าย, หน้า-ขวา
    โมดูลเจ้าของ: 4294967295
    ปิดเสียง: ไม่
    ระดับเสียง: หน้า-ซ้าย: 31249 / 48% / -19.30 dB, หน้า-ขวา: 31249 / 48% / -19.30 dB
            ยอดคงเหลือ 0.00
    ปริมาณฐาน: 65536 / 100% / 0.00 dB
    แหล่งที่มาของจอภาพ: alsa_output.pci-0000_2d_00.4.analog-stereo.monitor
    เวลาแฝง: 0 usec, กำหนดค่า 0 usec
    ค่าสถานะ: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    คุณสมบัติ:
        object.path = "alsa:pcm:1:front:1:playback"
        api.alsa.path = "ด้านหน้า:1"
        api.alsa.pcm.card = "1"
        api.alsa.pcm.stream = "เล่น"
        audio.channels = "2"
        audio.position = "FL,FR"
        อุปกรณ์ เส้นทาง = "2"
        alsa. resolution_bits = "16"
        device.api = "อัลซ่า"
        device.class = "เสียง"
        alsa.class = "ทั่วไป"
        alsa.subclass = "ผสมทั่วไป"
        alsa.name = "ALCS1200A อนาล็อก"
        alsa.id = "ALCS1200A อะนาล็อก"
        alsa.subdevice = "0"
        alsa.subdevice_name = "อุปกรณ์ย่อย #0"
        alsa.device = "0"
        alsa.card = "1"
        alsa.card_name = "HD-เสียงทั่วไป"
        alsa.long_card_name = "HD-Audio Generic ที่ 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "อะนาล็อกสเตอริโอ"
        device.profile.description = "สเตอริโออะนาล็อก"
        card.profile.device = "5"
        device.id = "41"
        ชื่อโรงงาน = "api.alsa.pcm.sink"
        ลำดับความสำคัญไดรเวอร์ = "689"
        ลำดับความสำคัญ เซสชัน = "689"
        media.class = "เสียง/ซิงก์"
        node.nick = "HD-Audio ทั่วไป"
        node.name = "alsa_output.pci-0000_2d_00.4.analog-สเตอริโอ"
        device.description = "Starship/Matisse HD Audio Controller อะนาล็อกสเตอริโอ"
        device.icon_name = "การ์ดเสียง-อะนาล็อก"
        device.bus = "pci"
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = "เท็จ"
        โรงงาน.id = "18"
        client.id = "32"
        node.driver = "จริง"
        factory.mode = "ผสาน"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = "47"
        node.max-latency = "8192/48000"
    พอร์ต:
        เอาต์พุตอะนาล็อก lineout: Line Out (ประเภท: Line, ลำดับความสำคัญ: 9000, กลุ่มความพร้อมใช้งาน: Legacy 4, พร้อมใช้งาน)
        หูฟังเอาต์พุตอะนาล็อก: หูฟัง (ประเภท: หูฟัง, ลำดับความสำคัญ: 9900, กลุ่มความพร้อมใช้งาน: Legacy 5, ไม่มี)
    พอร์ตที่ใช้งานอยู่: เอาต์พุตแบบอะนาล็อก
    รูปแบบ:
        พีซีเอ็ม
Score:1
ธง zw

เคล็ดลับคือ คุณต้องเปลี่ยนอินพุตซิงก์ของคุณ ซึ่งจะใช้ได้เฉพาะเมื่อเปิดใช้งาน/ทำงานอยู่:

pactl แสดงรายการ sink-input แบบสั้น
28 8 31 protocol-native.c float32le 2ch 48000Hz

สตรีมของคุณ "28" ถูกแมปกับเอาต์พุต "8" สามารถตรวจสอบผลลัพธ์นั้นได้ด้วย:

pactl list sinks แบบสั้น
1 alsa_output.pci-0000_1e_00.3.analog-stereo module-alsa-card.c s16le 2ch 48000Hz ระงับ
8 alsa_output.pci-0000_1c_00.1.hdmi-stereo-extra3 module-alsa-card.c s16le 2ch 48000Hz ระงับ

ดังนั้นในปัจจุบันอินพุตสตรีม 28 (ไม่ว่าจะเป็นสตรีมต้นทางใดก็ตาม) จะถูกส่งตรงไปยังการ์ด hdmi หากคุณต้องการเปลี่ยนเอาต์พุตเป็น ภายใน การ์ดอะนาล็อก (เช่น หูฟัง) สามารถย้ายได้โดยการออก:

pactl เลื่อน-จม-อินพุต 28 1

อ่างล้างจานอันหนึ่งของคุณแทนหูฟัง และอีกอันแทนลำโพง ดังนั้นแทนที่จะใช้ (" คุณจะต้องเปลี่ยนอินพุตของคุณเป็น 52 หรือ 55

แก้ไข

เนื่องจากฉันไม่คุ้นเคยกับอุปกรณ์ออปติคัลนอกเหนือจากหูฟังแบบแอนะล็อก ฉันจึงลองใช้พอร์ตสวิตช์พ่วง:

รายการ pactl จม
อ่าง #16
    รัฐ: วิ่ง
    ชื่อ: alsa_output.pci-0000_1e_00.3.analog-stereo
    ....
    พอร์ต: 
        เอาต์พุตอะนาล็อก lineout: Line Out (ประเภท: Line, ลำดับความสำคัญ: 9000, พร้อมใช้งาน)
        หูฟังเอาต์พุตอะนาล็อก: หูฟัง (ประเภท: หูฟัง, ลำดับความสำคัญ: 9900, มี)
    พอร์ตที่ใช้งานอยู่: เอาต์พุตแบบอะนาล็อก

ในกรณีนี้ คุณสามารถเปลี่ยนพอร์ตใน sink #16 ด้วย:

pactl set-sink-port 16 เอาต์พุตอะนาล็อก-lineout

หรือ

pactl set-sink-port 16 อะนาล็อก-เอาท์พุต-หูฟัง

คุณจำเป็นต้องค้นหาดัชนีซิงก์และชื่อพอร์ตที่ถูกต้อง ซึ่งจะใช้ได้เฉพาะเมื่อเอาต์พุตดิจิทัลเป็นพอร์ตเท่านั้น

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

TMarks avatar
kr flag
ขอบคุณมากสำหรับการตอบ ฉันกังวลว่าจะไม่มีใครรู้! โชคไม่ดีที่ฉันพยายามไม่ย้ายจากการ์ดภายในไปยังการ์ดแสดงผล แต่จากเอาต์พุต 3.5 มม. ของการ์ดภายในไปยังเอาต์พุตเสียงออปติคัล ฉันสามารถทำสิ่งนี้ได้ด้วยตนเองผ่านเมนูการตั้งค่า แม้ว่าจะเล่นซอที่ฉันพูดถึงในคำถามของฉันก็ตาม จากสิ่งที่คุณอธิบายมันฟังดูเหมือนฉันพยายามที่จะเปลี่ยนสิ่งที่อยู่ในลำดับชั้นที่ต่ำกว่าอ่างล้างจาน ในไดอะแกรมนี้ (https://gavv.github.io/articles/pulseaudio-under-the-hood/diagrams/devices_and_streams.png) ฉันกำลังพยายามเปลี่ยนช่องที่มีข้อความว่า "หูฟัง"
kanehekili avatar
zw flag
ตกลง- เนื่องจากคุณแสดงให้เราเห็นอ่างล้างจาน ฉันคิดว่าคุณต้องการสลับไปมาระหว่างอ่างเหล่านั้น ที่นี่คุณจะต้องเปลี่ยนพอร์ต - ตามที่คุณได้คาดเดาไว้แล้ว ฉันจะตรวจสอบว่าฉันสามารถหา sth
TMarks avatar
kr flag
ขอบคุณ ฉันได้แก้ไขคำถามของฉันเพื่อแสดงว่ามีพอร์ตใดบ้างที่พร้อมใช้งานสำหรับฉันและปัญหาที่ฉันมีฉันคิดว่านี่ใกล้เคียงกับคำตอบมากขึ้น แต่ฉันไม่สามารถเข้าใจได้ว่าเหตุใดพอร์ตจึงปรากฏขึ้นในเมนูการตั้งค่า แต่ไม่อยู่ในคำสั่ง `pactl list sinks`
kanehekili avatar
zw flag
คำสั่งของคุณไม่มีหมายเลขซิงก์ ลองกับ `pactl set-sink-port 47 iec958-สเตอริโอเอาท์พุต`
TMarks avatar
kr flag
ดูเหมือนจะไม่เป็นเช่นนั้น ฉันไม่สามารถตั้งค่า `sink-port` ได้ เนื่องจากจะแสดงทีละรายการเท่านั้น
kanehekili avatar
zw flag
`การ์ดรายการ pactl` พูดว่าอย่างไร คุณอาจต้องเปลี่ยนการ์ด ดู [ที่นี่](https://unix.stackexchange.com/questions/65246/change-pulseaudio-input-output-from-shell)สำหรับข้อมูลเพิ่มเติม
TMarks avatar
kr flag
ให้เรา [ดำเนินการสนทนาต่อในการแชท](https://chat.stackexchange.com/rooms/131021/discussion-between-tmarks-and-kanehekili)
TMarks avatar
kr flag
ฉันได้เพิ่มคำตอบสำหรับคำถามแล้ว ขอบคุณมากสำหรับความช่วยเหลือของคุณ @kanehekilli ฉันซาบซึ้งจริงๆ
kanehekili avatar
zw flag
ดีใจที่คุณคิดออก ขอบคุณที่สละเวลา - ฉันได้เรียนรู้มากมาย ยังไม่เข้าใจว่าเหตุใดการติดตั้งใหม่จึงแก้ไขได้
TMarks avatar
kr flag
ฉันคิดว่าเหตุผลคือฉันใช้ PipeWire ร่วมกับ PulseAudio ฉันไม่แน่ใจว่าชุดค่าผสมนี้โต้ตอบกันอย่างไร แต่ฉันเชื่อว่า PipeWire กำลังจัดการพอร์ตของฉันและเพิ่งส่งต่อไปยัง PulseAudio ซึ่งหมายความว่าพอร์ตเหล่านี้จะไม่ปรากฏใน `pactl list sinks` การติดตั้ง PulseAudio อีกครั้งเป็นการถอนการติดตั้ง PipeWire ซึ่งหมายความว่า Pulse สามารถควบคุมอ่างเก็บเสียงได้อย่างสมบูรณ์อีกครั้ง นั่นคือทฤษฎีการวิ่งของฉัน
Score:0
ธง kr

ปัญหาของฉันเกิดจากการใช้ PipeWire ฉันไม่สามารถแก้ไขปัญหานี้ในขณะที่ยังใช้ PipeWire ได้ ดังนั้นฉันจึงพยายามถอนการติดตั้ง แต่พบปัญหา GUI ขัดข้อง จึงต้อง sudo apt install --reinstall ubuntu-desktop จากนั้นรีบูต หลังจากนี้และรันเฉพาะ PulseAudio daemon ฉันสามารถใช้:

pactl set-card-profile {card_number} {ชื่อโปรไฟล์}

เพื่อสลับระหว่างเอาต์พุตได้สำเร็จโดยมีการหน่วงเวลาเพียงเล็กน้อย (โดยไม่มีเสียงออกระหว่างการหน่วงเวลา) นี่ดูเหมือนจะเป็นสิ่งที่ดีที่สุดที่สามารถทำได้ และฉันจะปล่อยให้มันเป็นอย่างนั้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา