Điểm:1

Chuyển đổi thiết bị âm thanh phá vỡ đầu ra âm thanh quang học

lá cờ kr

Tôi đang cố gắng chuyển nhanh giữa đầu ra âm thanh của tai nghe và loa của mình. Cả hai đều được kết nối với bo mạch chủ của tôi, có một dòng ra và một Đầu ra âm thanh quang học dòng. Lý tưởng nhất là tôi muốn thực hiện việc này thông qua hai lệnh để tôi có thể thêm chúng dưới dạng macro/phím nóng.

  • Loa -> Âm thanh quang học
  • Tai nghe -> Đầu ra

Tôi có thể thực hiện chuyển đổi từ loa sang tai nghe bằng cách sử dụng Cài đặt > Âm thanh > Đầu ra menu nơi nó liệt kê thành công 4 tùy chọn âm thanh mà tôi đã cắm vào, hai tùy chọn còn lại là kết nối DP/HDMI qua card đồ họa. Nếu bây giờ tôi cố gắng chuyển trở lại loa từ tai nghe của mình, thì không có âm thanh nào được phát ra. Tôi có một 'cách giải quyết' là tôi tạm dừng tất cả âm thanh, chuyển sang một trong các đầu ra của card đồ họa, đợi 5 giây, chuyển sang loa, đợi 5 giây, sau đó phát nhạc và điều này cho đến nay đã khắc phục được sự cố một cách đáng tin cậy.

Tôi đã cố gắng sử dụng hiệp ước để thay đổi kết quả đầu ra, mà tôi nghĩ sẽ là bồn rửa, nhưng tôi chỉ có sẵn hai bồn rửa:

â ~ danh sách pactl bị rút ngắn
55 alsa_output.pci-0000_2d_00.4.iec958-âm thanh nổi PipeWire s32le 2ch 48000Hz CHẠY
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz ĐÃ TẠM NGƯNG

Đây là hiển thị trong khi nghe âm thanh trên loa. Dưới đây là trong khi lsitening để âm thanh trên tai nghe.

â ~ danh sách pactl bị rút ngắn
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz ĐÃ TẠM NGƯNG
55 alsa_output.pci-0000_2d_00.4.analog-stereo PipeWire s32le 2ch 48000Hz CHẠY

tôi giả sử những bồn rửa tương ứng với card âm thanh của bo mạch chủ và đầu ra GPU. Trong trường hợp này, tôi mong đợi rằng việc thay đổi cổng thiết bị sẽ là lệnh tôi đang tìm kiếm.

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-âm thanh nổi analog-âm thanh nổi        
Thất bại: Không có thực thể như vậy

Tôi khá bối rối về cách làm việc này. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Dưới đây là một số thông tin tôi tin rằng sẽ quan trọng. Hệ điều hành: Ubuntu 21.10

Dưới đây là đầu ra của thông tin hiệp ước với tên người dùng của tôi đã bị xóa:

Chuỗi máy chủ: /run/user/1000/Pulse/native
Phiên bản giao thức thư viện: 35
Phiên bản giao thức máy chủ: 35
Là địa phương: có
Chỉ số khách hàng: 68
Kích thước gạch: 65472
Tên người dùng: {USER}
Tên máy chủ: Ubuntu
Tên máy chủ: PulseAudio (trên PipeWire 0.3.38)
Phiên bản máy chủ: 15.0.0
Thông số mẫu mặc định: float32le 2ch 48000Hz
Bản đồ kênh mặc định: phía trước bên trái, phía trước bên phải
Chìm mặc định: alsa_output.pci-0000_2d_00.4.iec958-stereo
Nguồn mặc định: alsa_input.usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera_SN0001-02.analog-stereo
Cookie: bf70:5e64

CHỈNH SỬA

Đưa ra câu trả lời và nhận xét của @kanehekili, có vẻ như tôi đang tìm cách đặt cảng chìm. Cách để làm điều này là sử dụng pactl set-sink-port {SINK_NAME} {PORT_NAME} tuy nhiên cổng của tôi không tồn tại theo danh sách pactl chìm:

â ~ danh sách hiệp ước chìm xuống
Chìm #47
    Trạng thái: CHẠY
    Tên: alsa_output.pci-0000_2d_00.4.iec958-âm thanh nổi
    Mô tả: Bộ điều khiển âm thanh Starship/Matisse HD Âm thanh nổi kỹ thuật số (IEC958)
    Trình điều khiển: PipeWire
    Đặc điểm kỹ thuật mẫu: s32le 2ch 48000Hz
    Bản đồ kênh: phía trước bên trái, phía trước bên phải
    Mô-đun chủ sở hữu: 4294967295
    Tắt tiếng: không
    Âm lượng: trước-trái: 28524/44%/-21,68 dB, trước-phải: 28524/44%/-21,68 dB
            số dư 0,00
    Âm lượng cơ sở: 65536/100%/0,00 dB
    Nguồn màn hình: alsa_output.pci-0000_2d_00.4.iec958-stereo.monitor
    Độ trễ: 0 usec, được định cấu hình 0 usec
    Cờ: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY SET_FORMATS 
    Tính chất:
        object.path = "alsa:pcm:1:iec958:1:playback"
        api.alsa.path = "iec958:1"
        api.alsa.pcm.card = "1"
        api.alsa.pcm.stream = "phát lại"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "1"
        alsa.resolution_bits="16"
        thiết bị.api = "alsa"
        device.class = "âm thanh"
        alsa.class = "chung chung"
        alsa.subclass = "hỗn hợp chung"
        alsa.name = "ALCS1200A Kỹ thuật số"
        alsa.id = "ALCS1200A kỹ thuật số"
        alsa.subdevice = "0"
        alsa.subdevice_name = "thiết bị con #0"
        alsa.device = "1"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Chung ở 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "iec958-âm thanh nổi"
        device.profile.description = "Âm thanh nổi kỹ thuật số (IEC958)"
        thẻ.profile.device = "11"
        thiết bị.id = "41"
        factory.name = "api.alsa.pcm.sink"
        ưu tiên.driver = "672"
        ưu tiên.session = "672"
        media.class = "Âm thanh/Chìm"
        node.nick = "HD-Audio Generic"
        node.name = "alsa_output.pci-0000_2d_00.4.iec958-âm thanh nổi"
        device.description = "Starship/Matisse HD Audio Controller Digital Stereo (IEC958)"
        device.icon_name = "audio-card-iec958"
        thiết bị.bus = "pci"
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = "false"
        nhà máy.id = "18"
        khách hàng.id = "32"
        nút.driver = "true"
        factory.mode = "hợp nhất"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        đối tượng.id = "47"
        node.max-latency = "8192/48000"
    Cổng:
        iec958-đầu ra âm thanh nổi: Đầu ra Kỹ thuật số (S/PDIF) (loại: SPDIF, mức độ ưu tiên: 0, tính khả dụng không xác định)
    Cổng hoạt động: iec958-stereo-output
    định dạng:
        pcm

Khi tôi cố gắng chuyển cổng chìm, tôi gặp lỗi

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-âm thanh nổi analog-âm thanh nổi        
Thất bại: Không có thực thể như vậy

Điều trên xảy ra ngay cả khi sử dụng mã định danh số cho phần chìm. Có vẻ như cổng tôi đang tìm không tồn tại, tuy nhiên tôi có thể thay đổi cổng bằng cách sử dụng menu Cài đặt mà tôi đã đề cập ở trên và chạy tương tự danh sách pactl chìm thay đổi các cổng để tôi iec958-âm thanh nổi cổng không còn tồn tại:

â ~ danh sách hiệp ước chìm xuống
Chìm #47
    Trạng thái: CHẠY
    Tên: alsa_output.pci-0000_2d_00.4.analog-stereo
    Mô tả: Bộ điều khiển âm thanh Starship/Matisse HD Âm thanh nổi tương tự
    Trình điều khiển: PipeWire
    Đặc điểm kỹ thuật mẫu: s32le 2ch 48000Hz
    Bản đồ kênh: phía trước bên trái, phía trước bên phải
    Mô-đun chủ sở hữu: 4294967295
    Tắt tiếng: không
    Âm lượng: trước-trái: 31249/48%/-19,30 dB, trước-phải: 31249/48%/-19,30 dB
            số dư 0,00
    Âm lượng cơ sở: 65536/100%/0,00 dB
    Nguồn màn hình: alsa_output.pci-0000_2d_00.4.analog-stereo.monitor
    Độ trễ: 0 usec, được định cấu hình 0 usec
    Cờ: PHẦN CỨNG HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    Tính chất:
        object.path = "alsa:pcm:1:front:1:playback"
        api.alsa.path = "phía trước: 1"
        api.alsa.pcm.card = "1"
        api.alsa.pcm.stream = "phát lại"
        audio.channels = "2"
        audio.position = "FL,FR"
        device.routes = "2"
        alsa.resolution_bits="16"
        thiết bị.api = "alsa"
        device.class = "âm thanh"
        alsa.class = "chung chung"
        alsa.subclass = "hỗn hợp chung"
        alsa.name = "ALCS1200A Tương tự"
        alsa.id = "ALCS1200A Tương tự"
        alsa.subdevice = "0"
        alsa.subdevice_name = "thiết bị con #0"
        alsa.device = "0"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Chung ở 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "analog-stereo"
        device.profile.description = "Âm thanh nổi tương tự"
        thẻ.profile.device = "5"
        thiết bị.id = "41"
        factory.name = "api.alsa.pcm.sink"
        ưu tiên.driver = "689"
        ưu tiên.session = "689"
        media.class = "Âm thanh/Chìm"
        node.nick = "HD-Audio Generic"
        node.name = "alsa_output.pci-0000_2d_00.4.analog-stereo"
        device.description = "Starship/Matisse HD Audio Controller Analog Stereo"
        device.icon_name = "audio-card-analog"
        thiết bị.bus = "pci"
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = "false"
        nhà máy.id = "18"
        khách hàng.id = "32"
        nút.driver = "true"
        factory.mode = "hợp nhất"
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        đối tượng.id = "47"
        node.max-latency = "8192/48000"
    Cổng:
        analog-output-lineout: Line Out (loại: Line, ưu tiên: 9000, nhóm khả dụng: Legacy 4, khả dụng)
        analog-output-headphones: Tai nghe (loại: Tai nghe, mức độ ưu tiên: 9900, nhóm khả dụng: Legacy 5, không khả dụng)
    Cổng hoạt động: analog-output-lineout
    định dạng:
        pcm
Điểm:1
lá cờ zw

Mẹo nhỏ là bạn cần chuyển đổi đầu vào chìm - chỉ khả dụng khi chúng đang hoạt động/đang chạy:

danh sách pactl đầu vào chìm ngắn
28 8 31 giao thức gốc.c float32le 2ch 48000Hz

Luồng "28" của bạn được ánh xạ tới đầu ra "8". Đầu ra đó có thể được kiểm tra bằng:

danh sách pactl chìm ngắn
1 alsa_output.pci-0000_1e_00.3.analog-stereo module-alsa-card.c s16le 2ch 48000Hz ĐÃ TẠM NGƯNG
8 alsa_output.pci-0000_1c_00.1.hdmi-stereo-extra3 mô-đun-alsa-card.c s16le 2ch 48000Hz ĐÃ TẠM NGƯNG

Vì vậy, hiện tại luồng đầu vào 28 (bất kỳ luồng nguồn nào có thể là gì) được chuyển hướng đến thẻ hdmi. Nếu bạn muốn thay đổi đầu ra thành nội bộ thẻ tương tự (ví dụ: tai nghe) chỉ có thể di chuyển nó bằng cách phát hành:

pactl move-sink-input 28 1

Vì vậy, một trong các phần chìm của bạn đại diện cho tai nghe, phần còn lại đại diện cho loa. Vì vậy, thay vì sử dụng (" bạn sẽ cần chuyển đầu vào của mình sang 52 hoặc 55.

CHỈNH SỬA

Vì tôi không quen với thiết bị quang ngoài tai nghe analog, tôi sẽ thử kéo các cổng chuyển đổi:

danh sách pactl chìm
Chìm #16
    Trạng thái: CHẠY
    Tên: alsa_output.pci-0000_1e_00.3.analog-stereo
    ....
    Cổng: 
        analog-output-lineout: Line Out (loại: Line, ưu tiên: 9000, khả dụng)
        analog-output-headphones: Tai nghe (loại: Tai nghe, ưu tiên: 9900, có sẵn)
    Cổng hoạt động: analog-output-lineout

Trong trường hợp này, bạn có thể chuyển đổi các cổng trong phần chìm số 16 bằng:

pactl set-sink-port 16 analog-output-lineout

hoặc

pactl set-sink-port 16 tai nghe đầu ra tương tự

Bạn cần tìm đúng chỉ số chìm và tên cổng - chỉ áp dụng nếu đầu ra kỹ thuật số là một cổng.

Ví dụ này không thực sự hoạt động theo mặc định vì pulseaudio và alsa thường tự động tắt tiếng loa nếu chúng được lắp vào (xem đây để biết thêm thông tin) nhưng với các cài đặt thích hợp thì nó vẫn hoạt động.

TMarks avatar
lá cờ kr
Cảm ơn rất nhiều vì đã trả lời, tôi đã lo lắng không ai biết! Thật không may, tôi đang cố gắng chuyển không phải từ card nội bộ sang card đồ họa mà từ đầu ra 3,5mm của card nội bộ sang đầu ra âm thanh quang học. Tôi có thể thực hiện việc này theo cách thủ công thông qua menu cài đặt, mặc dù có sự cố mà tôi đã đề cập trong câu hỏi của mình. Từ những gì bạn đã mô tả, có vẻ như tôi đang cố gắng thay đổi bất cứ thứ gì thấp hơn trong hệ thống phân cấp so với chìm. Trong sơ đồ này (https://gavv.github.io/articles/pulseaudio-under-the-hood/diagrams/devices_and_streams.png), tôi đang cố gắng thay đổi hộp có nhãn "Tai nghe".
kanehekili avatar
lá cờ zw
OK- vì bạn đã chỉ cho chúng tôi các bồn rửa nên tôi nghĩ bạn muốn chuyển đổi giữa chúng. Tại đây, bạn sẽ phải chuyển các cổng - như bạn đã phỏng đoán. Tôi sẽ kiểm tra nếu tôi có thể tìm thấy sth
TMarks avatar
lá cờ kr
Cảm ơn, tôi đã chỉnh sửa câu hỏi của mình để hiển thị những cổng nào có sẵn cho tôi và vấn đề tôi đang gặp phải ở đó.Tôi nghĩ rằng điều này gần với câu trả lời hơn nhưng tôi không thể hiểu tại sao các cổng sẽ hiển thị trong menu cài đặt nhưng không hiển thị trong lệnh `pactl list sinks`.
kanehekili avatar
lá cờ zw
Lệnh của bạn thiếu số chìm. thử với `pactl set-sink-port 47 iec958-stereo-output`
TMarks avatar
lá cờ kr
Điều đó dường như không phải là nó. Tôi dường như không thể đặt `sink-port`, vì mỗi lần chỉ có một cái xuất hiện.
kanehekili avatar
lá cờ zw
`thẻ danh sách pactl` nói lên điều gì? Bạn có thể phải đổi thẻ. Xem [tại đây](https://unix.stackexchange.com/questions/65246/change-pulseaudio-input-output-from-shell) để biết thêm thông tin
TMarks avatar
lá cờ kr
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/131021/discussion-between-tmarks-and-kanehekili).
TMarks avatar
lá cờ kr
Tôi đã thêm một câu trả lời cho câu hỏi. Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn @kanehekilli, tôi thực sự đánh giá cao điều đó.
kanehekili avatar
lá cờ zw
Rất vui vì bạn đã tìm ra nó. Cảm ơn vì thời gian của bạn - Tôi đã học được rất nhiều. Vẫn không hiểu tại sao cài đặt lại đã sửa nó.
TMarks avatar
lá cờ kr
Tôi nghĩ lý do là tôi đã sử dụng PipeWire kết hợp với PulseAudio. Tôi không chắc tổ hợp này tương tác với nhau như thế nào, nhưng tôi tin rằng PipeWire đang xử lý các cổng của tôi và chỉ chuyển chúng tới PulseAudio, nghĩa là chúng sẽ không hiển thị trong `các phần chìm trong danh sách pactl`. Cài đặt lại PulseAudio cũng gỡ cài đặt PipeWire, nghĩa là Pulse lại có toàn quyền kiểm soát các phần chìm của Âm thanh. Đó là lý thuyết chạy của tôi.
Điểm:0
lá cờ kr

Vấn đề của tôi rõ ràng là do sử dụng PipeWire. Tôi không thể giải quyết vấn đề này mà tôi gặp phải khi vẫn đang sử dụng PipeWire nên tôi đã cố gỡ cài đặt, gặp sự cố GUI, phải Sudo apt install --reinstall ubuntu-desktop sau đó khởi động lại. Sau này và chỉ chạy daemon PulseAudio, tôi đã có thể sử dụng:

pactl set-card-profile {card_number} {profile_name}

để chuyển đổi thành công giữa các đầu ra chỉ với độ trễ nhỏ (không có âm thanh phát ra trong thời gian trễ). Đây dường như là điều tốt nhất có thể được thực hiện và tôi sẽ để nó ở đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.