Bagaimana saya bisa memaksa penemuan kembali perangkat suara virtual PulseAudio?

8

Saya menggunakan fitur PulseAudio perangkat suara jaringan (bukan Multicast / RTP) untuk memutar suara dari netbook saya pada peralatan audio yang terhubung ke HTPC ketika di rumah. Ini menciptakan perangkat suara virtual yang kemudian dapat saya gunakan sebagai pengganti perangkat bawaan fisik. Sebagian besar waktu ini berfungsi dengan baik. Namun terkadang, perangkat suara virtual tidak muncul. Memutuskan hubungan dari dan menghubungkan kembali ke jaringan kadang-kadang membantu tetapi tidak selalu dan itu menjengkelkan dan berpotensi buruk untuk koneksi TCP yang ada.

Jadi pada dasarnya pertanyaan saya adalah: Apakah ada cara untuk memberi tahu PulseAudio "Hei, lihat lagi jika Anda benar - benar tidak dapat menemukan perangkat suara jaringan."?


Sunting: Bongkar dan muat ulang module-zeroconf-discoverdengan pacmdtidak membantu juga dan itu tampaknya tidak menjadi masalah avail per se karena avahi-browse -t --all | grep PulseAudiomenunjukkan banyak hal yang tampak benar, bahkan ketika perangkat tidak terdaftar dalam pavucontrol atau pacmd list-sinks.


Sunting 2: Saya menggunakan Ubuntu 12.04 pada kedua kotak untuk semua perbedaan yang mungkin terjadi.

Kristen
sumber
Jika Anda melewatkan informasi apa pun untuk memberikan komentar yang bermanfaat atau bahkan jawaban, tolong beri tahu saya.
Christian

Jawaban:

7
  1. Pada PC "Sink" (Pada speaker yang Anda ingin memutar suara) buka shell perintah PulseAudio dengan masuk ke Terminal dan mengeluarkan perintah berikut.

    $ pacmd

    Anda akan melihat shell mirip-Python dengan pesan sambutan berikut.

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. Daftar perangkat yang dapat memutar suara pada PC dengan perintah di shell PulseAudio.
    >>> list-sinks
    Sekarang Anda akan melihat daftar terperinci dari semua sound sink.
  3. Catat saja nama lengkap wastafel pilihan Anda. Itu akan muncul sebagai atribut kartu suara. Misalnya dalam kasus saya adalah:

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

String yang saya minati hanyalah "alsa_output.pci-0000_00_1b.0.analog-stereo"

  1. Sekarang Masuk ke PC Sumber (yaitu asal dari stream multimedia audio), buka terminal dan mengeluarkan perintah berikut

    $ 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"

    Di sini 192.168.1.105 adalah alamat IP dari sink PC, "alsa_output.pci-0000_00_1b.0.analog-stereo "adalah string yang baru saja Anda salin dari terminal wastafel dan" home_theater "hanyalah nama mewah untuk memanggil perangkat output suara virtual ini di komputer Anda.

  2. Akhirnya pilih perangkat suara virtual ini dengan:
    $ pacmd set-default-sink home_theater

    Wallah !!
Rishav Ambasta
sumber
Bekerja untuk saya - bekerja dengan modul tunnel sink baru juga dan hanya dengan alamat IP host sink tanpa perlu menentukan wastafel yang tepat (saya hanya menggunakan satu di Raspberry Pi ini terhubung ke stereo saya, jadi tidak perlu untuk itu): 'pactl server modul load-module-tunnel-sink-new = [2001: 470: ca90: 4: ba27: ebff: fee2: ada9] '- terima kasih!
Jean-Marc Liotier
4

Sederhana sudo service avahi-daemon restartmelakukan trik, meskipun avahi-browsemelihat perangkat sebelum itu avahi restart. Terima kasih kepada Takkat karena menunjuk saya ke arah yang benar.

Kristen
sumber
3

Jawaban ini belum diuji sehingga mungkin tidak berhasil, tetapi mungkin mengarahkan Anda ke arah yang benar.

Saya dapat mengkonfirmasi masalah yang belum terselesaikan dengan layanan Avahi yang terkadang tidak dapat terhubung ke server PulseAudio. Kami mungkin berhasil menghubungkan kembali dengan me-restart jaringan, atau server pulseaudio tetapi sayangnya ini tidak selalu berhasil.

Untuk mengatasi masalah ini, kami dapat mencoba membuat aliran audio jaringan menggunakan protokol TCP asli untuk melakukan streaming langsung ke IP daripada menggunakan resolusi nama Avahi.

Untuk melakukannya, kita dapat melakukan tunnel remote sink dengan memuat module-tunnel-sink di sisi penerima. Pada pengirim kita harus mengaktifkan protokol TCP asli dengan memuat module-native-protocol-tcp .

Lihat juga pertanyaan ini untuk terminologi dan cara mendefinisikan PULSE_SERVERvariabel:

Cara mengatur bak cuci default PulseAudio secara otomatis ke server jarak jauh saat boot - Ubuntu 9.04

Ini adalah pertanyaan yang agak lama untuk Ubuntu 9.04 tetapi untuk terminologi knwoledge saya dan prosedur tidak banyak berubah sejak saat itu.

Harap ikuti PulseAudio Wiki pada koneksi jaringan .

Takkat
sumber
Terima kasih untuk satu tautan. Solusi di sana benar-benar berfungsi dalam kasus saya, juga: sudo service avahi-daemon restartSaya tidak berharap itu karena avahi-browsemelihat perangkat bahkan sebelum restart tetapi saya kira restart memicu panggilan balik untuk dipanggil lagi yang adalah semua yang diperlukan.
Christian
@Christian: baik itu membantu. Saya sudah menyerah pada Avahi untuk saat ini.
Takkat
Saya tidak yakin apakah saya memahami proposisi Anda. Bisakah saya menggunakan resolusi nama DNS atau saya harus tahu IP? Saya lebih suka tidak menggunakan IP tetap meskipun Anda mungkin mengatakan dalam kasus HTPC ini adalah hal yang ok untuk dilakukan.
Christian
1
Ya, saya bisa mengerti mengapa. Saya hanya menulis jawaban saya sendiri karena bagi orang-orang yang tersandung pada pertanyaan ini karena mereka memiliki masalah yang sama sepertinya solusi paling sederhana.
Christian
1

Anda dapat mencoba pulseaudio -k, yang mematikan layanan pulseaudio (sepertinya mulai lagi secara otomatis). Ini telah mengembalikan banyak hal kepada saya sebelumnya.

Hal lain yang kadang-kadang membantu adalah melepaskan lalu memasukkan kembali kotak di Pulseaudio Preferences(alias paprefs). Kotak centang ada Make discoverable PulseAudio network sound devices available locallydi Network Access, dan Enable network access to local sound devicesdi Network Server. Jelas ini mungkin hanya berfungsi untuk yang Anda gunakan.

gib
sumber