Bagaimana cara streaming keluaran audio GNU / Linux saya ke perangkat Android melalui WI-FI?

39

Saya ingin mengalirkan output audio saya melalui jaringan (Wi-Fi) ke perangkat Android saya. Saya tidak mencari solusi streaming musik / video, tetapi saya akan mengalirkan output audio apa pun dari desktop GNU / Linux saya ke perangkat Android saya seperti headphone bluetooth.

Desktop GNU / Linux saya adalah Debian Wheezy dan suaranya disediakan oleh pulseaudio.

Saya sudah mencoba modul raop Pulseaudio (dan mengaktifkannya di paprefs) + aplikasi AirBuddle Android, tetapi audionya tidak dialirkan (pulseaudio lihat terhubung ke AirBuddle, tetapi suaranya tidak direproduksi, ada kegagalan koneksi di beberapa perangkat lunak, di beberapa perangkat lunak lain suara terhenti).

semente
sumber

Jawaban:

27

Ada solusi yang sangat sederhana karena PulseAudio sudah memiliki semua alat yang diperlukan.

  1. Dapatkan nama perangkat sumber Anda dengan perintah pactl list | grep Name
  2. Buat skrip berikut bernama pashare:

    #!/bin/sh
    case "$1" in
      start)
        $0 stop 
        pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=<source_name_here> record=true port=8000
        ;;
      stop)
        pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/[^0-9]//g'`
        ;;
      *)
        echo "Usage: $0 start|stop" >&2
        ;;
    esac
    
  3. Lakukan beberapa pemeriksaan dan persiapan (untuk memungkinkan eksekusi skrip dan periksa apakah port berhasil dibuka):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. Unduh dan instal PulseDroid.apk

  5. Luncurkan aplikasi di ponsel Anda; atur alamat IP ke komputer Anda dan porta ke 8000.

PS Anda juga dapat memeriksa halaman Wiki ini untuk informasi umum tentang streaming jaringan Pulseaudio, dan halaman Wiki ini tentang streaming RTP. Jangan berharap terlalu banyak dari streaming audio mentah melalui WiFi; dibutuhkan banyak sekali bandwidth. Bahkan dengan router nirkabel high-end / AP dengan sinyal kuat saya belum bisa mendapatkan lebih dari gagap audio keluar dari itu. Taruhan terbaik Anda mungkin adalah menyiapkan server media yang tepat (seperti Rygel, yang bekerja dengan baik dengan Pulseaudio) untuk mentranskode audio mentah ke sesuatu seperti MP3 dan streaming itu sebagai gantinya.

AlexAndersan
sumber
7
Ini juga berfungsi dengan baik pada Aplikasi Android ini: Simple Protocol Player play.google.com/store/apps/… Perhatikan bahwa standarnya untuk menilai = 44100, jadi Anda mungkin ingin menggunakannya.
Jannes
1
Hanya untuk memperjelas: output dari pactl list sources short lebih baik untuk menemukan jumlah parameter sumber.
wolfmanx
4
menggunakan pactl list | grep "Monitor Source"menunjukkan sumber yang lebih relevan untuk saya.
markroxor
18

Anda dapat menggunakan VLC untuk melayani aliran MP3 dari output pulseaudio melalui HTTP.
Keuntungan utama adalah Anda tidak perlu menginstal perangkat lunak khusus apa pun pada perangkat jarak jauh Anda, hanya peramban web (atau pemutar musik) yang Anda butuhkan untuk memainkan streaming. The downside adalah bahwa itu hanya audio, beberapa detik lag membuatnya tidak berguna untuk video

  1. Temukan nama keluaran pulseaudio dengan:

    pactl list | grep "Monitor Source" 
    
  2. Mulai server VLC http, ganti XXXX dengan nama output Anda:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. Jika perlu, cari alamat IP lokal Anda ifconfig

  4. Di perangkat jarak jauh Anda, arahkan browser (atau aplikasi streaming audio) ke:

    http://your.local.ip.address:8888/pc.mp3
    

Catatan: Aliran tidak terpengaruh oleh volume yang diatur di server, kecuali jika Anda benar-benar membisukannya. Jika perlu, Anda dapat menjaga level sedikit di atas 0 untuk hanya mendengar perangkat jarak jauh.


Dua langkah pertama digabungkan menjadi satu oleh polynomial_donut :

cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
wilks
sumber
1
luar biasa! Ada jeda 3 detik tapi saya senang dengan hack kecil ini sampai saya menemukan kabel sialan itu. Saya mungkin harus membeli yang lain ...
Slabo
@Slabo poin bagus, untuk beberapa alasan saya salah berasumsi OP hanya ingin streaming musik. Diedit jawaban saya
wilks
2
Satu baris alih-alih dua baris pertama: cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
polynomial_donut
Aliran IS langsung dipengaruhi oleh pengaturan volume untuk saya. Saya cukup mencolokkan earphone saya untuk menghentikan suara datang dari laptop.
Rolf
Ngomong-ngomong, bagaimana cara menghentikan kelambatan yang berlangsung seperti 1/2 jam?
Rolf
9

Untuk mengalirkan output audio melalui wifi ke ponsel Android Anda, Anda perlu menginstal perangkat lunak server, yang mengirimkan audio, pada PC dan perangkat lunak klien pada perangkat Android. Opsi yang tersedia adalah

WiFi Audio Speaker Nirkabel

Jalankan WiFi Audio Aplikasi Android dan Tekan mulai, Anda akan melihat alamat IP perangkat seluler di bagian bawah setelah itu menjalankan aplikasi Windows / Linux dan meletakkan alamat IP perangkat seluler di bidang alamat IP dan kemudian tekan mulai pada aplikasi PC. Sekarang semua audio yang keluar dari PC akan dikirim ke perangkat seluler dan Anda akan mendengar audio di perangkat seluler.
Unduh

SoundWire

Mentransmisikan musik atau audio secara nirkabel dari PC Anda ke ponsel Android Anda, tablet, atau PC
Home page lainnya. Lihat juga

Tautan bermanfaat lainnya
XBMC android SE

totti
sumber
SoundWire tertinggal 1-2 detik
Gaurav Gupta
@gauravgupta Tidak ketinggalan jika Anda memilih ukuran buffer yang lebih kecil. Coba juga gunakan kompresi. Ini bekerja dengan baik untuk saya.
raacer
dapatkah Anda menaruh tautan unduhan aplikasi PC dari WiFi Audio di sini?
seyed
1
WiFi Audio Speaker Nirkabel dihapus dari github dan versi yang dikompilasi di forum dilaporkan oleh pengguna sebagai malware. Hati-hati! Soundwire juga terlihat mencurigakan, dari cara didistribusikan.
Genom
0

Bagi Anda yang menggunakan Soundwire dan mengirimkan wifi dari laptop atau PC Anda, gunakan ifconfig PASTIKAN ANDA MENGGUNAKAN ALAMAT IP YANG BENAR. Ini masih berfungsi sampai hari ini, tetapi sebagian besar distro Linux membutuhkan adaptor wifi kedua untuk mengirimkan wifi dan Anda harus menggunakan salah satu yang terhubung dengan Android Anda. bukan internet penerima. Yang mengirimkannya.

yaitu -> Jika Anda menggunakan adaptor wifi "A" untuk terhubung ke internet dan "B" untuk mengirim wifi dari "A", kemudian sambungkan SoundWire di Android ke "B" BUKAN "A".

SoundWire TIDAK akan terhubung atau streaming jika Anda terhubung ke adaptor tidak mengirim wifi jadi masukkan alamat IP Anda ke aplikasi Andoroid Anda, dengan menggunakan perintah terminal ifconfig sesuai.

Ya ada jeda tetapi aplikasi ini, SoundWire, adalah sistem "multi-connect to ip and forget" yang paling sederhana di luar sana. Tidak ada menu gila untuk dilalui. Dan ya, itu menerima lebih dari satu koneksi. Saya menggunakan 2 hari yang lalu. Ini menambahkan jumlah perangkat yang terhubung dengannya di jendela utama pada perangkat yang mengirimkan transmisi.

Menggunakan ini secara pribadi sebagai sistem wifi-radio multi-ruangan / jarak pendek di tempat saya sampai hari ini.

Nikmati.

Roiikka
sumber
-4

Wah ini sudah tua ...

Pokoknya, gunakan VLC. GUI cantik sepanjang jalan.

  • Jalankan VLC di desktop Anda.
  • Tekan Stream, pilih file (tambahkan berapa banyak file yang Anda inginkan), tekan stream.
  • 'Selanjutnya' jika semuanya benar.
  • Untuk Destinasi Baru pilih "http" (atau apa pun yang ingin Anda gunakan). Pilih Tampilkan secara lokal jika Anda ingin memutarnya di mesin tempat Anda streaming juga. Beberapa dialog berikutnya semuanya jelas.

Jalankan VLC di perangkat Android Anda. Tekan ikon di sebelah tombol pencarian (panah menunjuk ke titik). ketik http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/untuk saya inihttp://xxx.ca:8080/

Diuji dan bekerja. Sekarang, bisakah seseorang melakukan ini di zaman kuno 9 Juni 13? Mungkin, tapi saya terlalu malas untuk memeriksa log commit VLC;)

Zeroedout
sumber
3
Dia tidak mencari solusi streaming musik / video.
Cristian Ciupitu