Làm thế nào tôi có thể buộc các khám phá của PulseAudio thiết bị âm thanh ảo?


8

Tôi đang sử dụng tính năng PulseAudio của các thiết bị âm thanh mạng (không phải Multicast / RTP) để phát âm thanh từ netbook của tôi trên thiết bị âm thanh được kết nối với HTPC khi ở nhà. Điều này tạo ra một thiết bị âm thanh ảo mà sau đó tôi có thể sử dụng thay vì thiết bị tích hợp vật lý. Hầu hết thời gian này hoạt động tốt. Tuy nhiên, đôi khi, thiết bị âm thanh ảo không xuất hiện. Việc ngắt kết nối và kết nối lại với mạng đôi khi giúp nhưng không phải lúc nào cũng gây phiền nhiễu và có khả năng xấu cho các kết nối TCP hiện có.

Vì vậy, câu hỏi của tôi về cơ bản là: Có cách nào để nói với PulseAudio "Này, hãy nhìn lại nếu bạn thực sự không thể tìm thấy thiết bị âm thanh mạng."?


Chỉnh sửa: Dỡ và tải lại module-zeroconf-discovervới pacmdkhông không giúp một trong hai và nó không xuất hiện để trở thành một vấn đề avahi cho mỗi gia nhập kể từ khi avahi-browse -t --all | grep PulseAudiochương trình rất nhiều thứ phải tìm kiếm, ngay cả khi các thiết bị không được liệt kê trong pavucontrol hay pacmd list-sinks.


Chỉnh sửa 2: Tôi đang sử dụng Ubuntu 12.04 trên cả hai hộp cho tất cả sự khác biệt mà nó có thể tạo ra.


Nếu bạn thiếu bất kỳ thông tin nào để cung cấp nhận xét hữu ích hoặc thậm chí là câu trả lời, vui lòng cho tôi biết như vậy.
Christian

Câu trả lời:


7
  1. Trên PC "Chìm" (Trên loa mà bạn muốn phát âm thanh), hãy mở vỏ lệnh PulseAudio bằng cách vào Terminal và đưa ra lệnh sau.

    $ pacmd

    Bạn sẽ thấy một vỏ giống như Python với thông báo chào mừng sau đây.

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. Liệt kê các thiết bị có thể phát âm thanh trên PC bằng lệnh trong vỏ PulseAudio.
    >>> list-sinks
    Bây giờ bạn sẽ thấy một danh sách chi tiết của tất cả các âm thanh chìm.
  3. Chỉ cần ghi lại hoàn chỉnh tên của chìm của sự lựa chọn của bạn. Nó sẽ xuất hiện như một thuộc tính của card âm thanh. Ví dụ trong trường hợp của tôi, đó là:

    1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    ...

Chuỗi sở thích của tôi chỉ là "alsaDefput.pci-0000_00_1b.0.analog-stereo"

  1. Bây giờ, hãy vào PC nguồn (tức là nguồn gốc của các luồng đa phương tiện âm thanh), mở thiết bị đầu cuối và ra lệnh sau

    $ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"

    đây 192.168.1.105 là địa chỉ IP của PC chìm, "alsaDefput.pci-0000_00_1b.0.analog-stereo "Là chuỗi bạn vừa sao chép từ thiết bị đầu cuối của chìm và" home_theater "chỉ là một cái tên lạ mắt để gọi thiết bị phát âm thanh ảo này trên máy tính của bạn.

  2. Cuối cùng chọn thiết bị âm thanh ảo này bằng cách:
    $ pacmd set-default-sink home_theater

    Wallah !!

Làm việc cho tôi - cũng hoạt động với mô đun chìm đường hầm mới và chỉ với địa chỉ IP máy chủ của bồn rửa mà không cần chỉ định bồn rửa chính xác (tôi chỉ sử dụng một trên Raspberry Pi được kết nối với âm thanh nổi của mình, vì vậy không cần điều đó): 'pactl tải mô-đun mô-đun-đường hầm-chìm-máy chủ mới = [2001: 470: ca90: 4: ba27: ebff: fee2: ada9] '- cảm ơn!
Jean-Marc Liotier

4

Một mẹo đơn giản sudo service avahi-daemon restart, mặc dù avahi-browsenhìn thấy các thiết bị trước khi avahi khởi động lại. Cảm ơn Takkat đã chỉ cho tôi đi đúng hướng.


3

Câu trả lời này chưa được kiểm tra nên có thể không hoạt động, nhưng nó có thể đưa bạn đi đúng hướng.

Tôi có thể xác nhận các sự cố chưa được giải quyết với dịch vụ Avahi mà đôi khi không thể kết nối với máy chủ PulseAudio. Chúng tôi có thể kết nối lại thành công bằng cách khởi động lại mạng hoặc máy chủ pulseaudio nhưng than ôi điều này không phải lúc nào cũng hoạt động.

Để khắc phục vấn đề này, chúng tôi có thể cố gắng thiết lập luồng âm thanh mạng bằng giao thức TCP gốc để truyền trực tiếp đến IP thay vì sử dụng độ phân giải tên Avahi.

Để làm như vậy, chúng ta có thể tạo đường hầm cho một bồn rửa từ xa bằng cách tải mô-đun-đường hầm-chìm ở phía bên nhận. Trên người gửi, chúng ta phải kích hoạt giao thức TCP gốc bằng cách tải mô-đun-giao thức-giao thức-tcp .

Xem thêm câu hỏi này để biết thuật ngữ và cách xác định PULSE_SERVERbiến:

Cách tự động đặt chìm mặc định PulseAudio cho máy chủ từ xa khi khởi động - Ubuntu 9.04

Đây là một câu hỏi khá cũ đối với Ubuntu 9.04 nhưng theo thuật ngữ và thủ tục knwoledge của tôi đã không thay đổi nhiều kể từ đó.

Vui lòng theo dõi PulseAudio Wiki về các kết nối mạng .


Cảm ơn cho một liên kết. Giải pháp ở đó cũng thực sự hoạt động trong trường hợp của tôi: sudo service avahi-daemon restartTôi không mong đợi điều đó bởi vì avahi-browsenhìn thấy các thiết bị ngay cả trước khi khởi động lại nhưng tôi đoán khởi động lại kích hoạt cuộc gọi lại được gọi lại, đó là tất cả những gì cần thiết.
Christian

@Christian: tốt nó đã giúp. Tôi đã từ bỏ Avahi trong thời gian này.
Takkat

Tôi không chắc chắn nếu tôi hiểu đề xuất của bạn mặc dù. Tôi có thể sử dụng độ phân giải tên DNS hay tôi phải biết IP? Tôi không muốn sử dụng IP cố định mặc dù bạn có thể nói trong trường hợp HTPC, đây là một việc nên làm.
Christian

1
Vâng, tôi có thể hiểu tại sao. Tôi chỉ viết câu trả lời của riêng tôi bởi vì đối với những người vấp phải câu hỏi này vì họ có cùng một vấn đề thì có vẻ như đó là giải pháp đơn giản nhất.
Christian

1

Bạn có thể thử pulseaudio -k, dịch vụ này sẽ giết dịch vụ pulseaudio (có vẻ như nó sẽ tự động khởi động lại). Điều này đã mang lại mọi thứ cho tôi trước đây.

Một điều khác đôi khi giúp đỡ là bỏ chọn và sau đó chọn lại các hộp trong Pulseaudio Preferences(aka paprefs). Các hộp kiểm tra được đặt Make discoverable PulseAudio network sound devices available locallytrong Network AccessEnable network access to local sound devicestrong Network Server. Rõ ràng điều này có lẽ chỉ hoạt động cho người bạn đang sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.