ฉันจะสตรีมเอาต์พุตเสียง GNU / Linux ของฉันไปยังอุปกรณ์ Android ผ่าน Wi-Fi ได้อย่างไร


39

ฉันต้องการสตรีมเอาท์พุทเสียงผ่านเครือข่าย (Wi-Fi) ไปยังอุปกรณ์ Android ของฉัน ฉันไม่ได้กำลังมองหาวิธีแก้ปัญหาการสตรีมเพลง / วิดีโอ แต่ฉันจะสตรีมเอาท์พุทเสียงใด ๆ ของเดสก์ท็อป GNU / Linux ของฉันไปยัง Android ที่ทำงานเหมือนหูฟังบลูทู ธ

เดสก์ท็อป GNU / Linux ของฉันคือ Debian Wheezy และเสียงจาก pulseaudio

ฉันได้ลองโมดูล raop ของ Pulseaudio (และเปิดใช้งานใน paprefs) + แอพ AirBuddle ของ Android แต่เสียงไม่ได้สตรีม (pulseaudio เห็นว่าเชื่อมต่อกับ AirBuddle แต่เสียงไม่ได้ทำซ้ำมีความล้มเหลวในการเชื่อมต่อในซอฟต์แวร์บางตัว โปรแกรมอื่น ๆ ที่ติดเสียง)

คำตอบ:


27

มีวิธีแก้ปัญหาที่ง่ายมากเนื่องจาก PulseAudio มีเครื่องมือที่จำเป็นทั้งหมดแล้ว

  1. รับชื่ออุปกรณ์ต้นทางด้วยคำสั่ง pactl list | grep Name
  2. สร้างสคริปต์ต่อไปนี้ชื่อ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. ตรวจสอบและเตรียมการบางอย่าง (เพื่ออนุญาตการเรียกใช้สคริปต์และตรวจสอบว่าพอร์ตเปิดสำเร็จหรือไม่):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. ดาวน์โหลดและติดตั้งPulseDroid.apk

  5. เปิดแอปในโทรศัพท์ของคุณ ตั้งค่าที่อยู่ IP 8000ไปยังเครื่องคอมพิวเตอร์ของคุณและพอร์ตไป

PS คุณสามารถตรวจสอบ หน้า Wiki นี้เพื่อดูข้อมูลทั่วไปเกี่ยวกับการสตรีมเครือข่าย Pulseaudio และหน้า Wikiเกี่ยวกับการสตรีม RTP อย่าคาดหวังมากเกินไปจากการสตรีมเสียงดิบผ่าน WiFi ใช้แบนด์วิดท์จำนวนมาก แม้จะมีเราเตอร์ไร้สายระดับสูง / AP พร้อมกับสัญญาณอันทรงพลังฉันก็ยังไม่สามารถรับเสียงได้มากกว่าการพูดติดอ่าง ทางออกที่ดีที่สุดของคุณน่าจะตั้งค่าเซิร์ฟเวอร์สื่อที่เหมาะสม (เช่น Rygel ซึ่งทำงานได้ดีกับ Pulseaudio) เพื่อแปลงสัญญาณเสียงดิบไปเป็น MP3 และสตรีมแทน


7
สิ่งนี้ยังทำงานได้อย่างสมบูรณ์กับแอพ Android นี้: Simple Protocol Player play.google.com/store/apps/… โปรดทราบว่าค่าเริ่มต้นนี้ให้คะแนน = 44100 ดังนั้นคุณอาจต้องการใช้สิ่งนั้น
Jannes

1
เพื่อชี้แจง: ผลลัพธ์ของpactl list sources short ดีกว่าที่จะหาหมายเลขของพารามิเตอร์แหล่งที่มา
wolfmanx

4
ใช้pactl list | grep "Monitor Source"แสดงแหล่งข้อมูลที่เกี่ยวข้องเพิ่มเติมสำหรับฉัน
markroxor

18

คุณสามารถใช้VLCเพื่อทำหน้าที่ส่งสัญญาณ MP3 ของ pulseaudio ผ่านทาง HTTP
ข้อได้เปรียบหลักคือคุณไม่จำเป็นต้องติดตั้งซอฟต์แวร์พิเศษใด ๆ บนอุปกรณ์ระยะไกลของคุณเว็บเบราว์เซอร์ (หรือเครื่องเล่นเพลง) เป็นสิ่งที่คุณต้องการในการเล่นสตรีม ข้อเสียคือมันเป็นเสียงเพียงไม่กี่วินาทีล่าช้าทำให้มันไร้ประโยชน์สำหรับวิดีโอ

  1. ค้นหาชื่อเอาต์พุตของ pulseaudio ด้วย:

    pactl list | grep "Monitor Source" 
    
  2. เริ่มต้นเซิร์ฟเวอร์ VLC http โดยแทนที่ XXXX ด้วยชื่อเอาต์พุตของคุณ:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. หากจำเป็นให้ค้นหาที่อยู่ IP ในพื้นที่ของคุณด้วย ifconfig

  4. บนอุปกรณ์ระยะไกลของคุณให้ชี้เบราว์เซอร์ (หรือแอพสตรีมเสียง) ไปที่:

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

หมายเหตุ: สตรีมไม่ได้รับผลกระทบจากปริมาณที่ตั้งค่าไว้บนเซิร์ฟเวอร์เว้นแต่คุณจะปิดเสียงทั้งหมด หากจำเป็นคุณสามารถรักษาระดับให้อยู่เหนือระดับ 0 เล็กน้อยเพื่อฟังเฉพาะอุปกรณ์ทางไกล


สองขั้นตอนแรกรวมกันเป็นหนึ่งเดียวโดย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}'

1
! น่ากลัว มีความล่าช้า 3 วินาที แต่ฉันมีความสุขกับการแฮ็กน้อยนี้จนกระทั่งฉันพบว่าสายเคเบิลแช่ง ฉันอาจจะต้องซื้ออีกหนึ่ง ...
Slabo

@Slabo เป็นจุดที่ดีด้วยเหตุผลบางอย่างที่ฉันคิดผิด OP ต้องการเพียงแค่สตรีมเพลง แก้ไขคำตอบของฉัน
วิลก์ส

2
หนึ่งซับแทนสองบรรทัดแรก: 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

สตรีม IS ได้รับผลกระทบโดยตรงจากการตั้งค่าระดับเสียงสำหรับฉัน ฉันเพียงเสียบหูฟังเพื่อหยุดเสียงที่จะออกมาจากแล็ปท็อป
Rolf

โดยวิธีการที่ฉันจะหยุดความล่าช้าจากยาวนานเช่น 1/2 ชั่วโมงได้อย่างไร
Rolf

9

ในการสตรีมเอาท์พุทเสียงผ่าน WiFi ไปยังโทรศัพท์ Android ของคุณคุณต้องติดตั้งซอฟต์แวร์เซิร์ฟเวอร์ซึ่งจะส่งเสียงบนพีซีและซอฟต์แวร์ไคลเอ็นต์บนอุปกรณ์ Android ตัวเลือกที่ใช้ได้คือ

WiFi Audio ลำโพงไร้สาย

เรียกใช้แอป WiFi Audio Android และกดเริ่มต้นคุณจะเห็นที่อยู่ IP ของอุปกรณ์มือถือด้านล่างหลังจากนั้นเรียกใช้แอปพลิเคชัน Windows / Linux และใส่ที่อยู่ IP ของอุปกรณ์มือถือในช่องที่อยู่ IP แล้วกดเริ่มบนแอปพลิเคชันพีซี ตอนนี้เสียงทั้งหมดที่ออกมาจากพีซีจะถูกส่งไปยังอุปกรณ์มือถือและคุณจะได้ยินเสียงบนอุปกรณ์มือถือ
ดาวน์โหลด

SoundWire

ส่งเพลงหรือเสียงใด ๆ จากพีซีไปยังโทรศัพท์ Android แท็บเล็ตหรือพีซีอื่น ๆ ใน
โฮมเพจ ดูเพิ่มเติมที่

ลิงค์อื่น ๆ ที่เป็นประโยชน์
XBMC android SE


SoundWire ล่าช้า 1-2 วินาที
Gaurav Gupta

@gauravgupta ไม่มีความล่าช้าหากคุณเลือกขนาดบัฟเฟอร์ที่เล็กลง ลองใช้การบีบอัดด้วย มันใช้งานได้ดีมากสำหรับฉัน
แข่ง

คุณสามารถใส่ลิงค์ดาวน์โหลดแอปพลิเคชันพีซีของ WiFi Audio ที่นี่ได้ไหม
seyed

1
WiFi Audio Wireless Speaker ถูกลบออกจาก github และเวอร์ชั่นที่รวบรวมในฟอรัมจะถูกรายงานโดยผู้ใช้ว่าเป็นมัลแวร์ ระวัง! Soundwire ยังมีลักษณะคาวจากวิธีการกระจาย
Genom

0

สำหรับผู้ที่ใช้ Soundwire และส่ง wifi จากแล็ปท็อปหรือพีซีของคุณโดยใช้ ifconfig ทำให้แน่ใจว่าคุณใช้ที่อยู่ IP ที่ถูกต้อง ยังคงใช้งานได้จนถึงทุกวันนี้ แต่ distros Linux ส่วนใหญ่ต้องการอแด็ปเตอร์ wifi ตัวที่สองเพื่อส่ง wifi และคุณต้องใช้อันที่ Android ของคุณเชื่อมต่ออยู่ ไม่ใช่อินเทอร์เน็ตที่ได้รับ คนส่งมันออกมา

ie -> หากคุณใช้อะแดปเตอร์ไร้สาย "A" เพื่อเชื่อมต่ออินเทอร์เน็ตและ "B" เพื่อส่ง wifi จาก "A" จากนั้นเชื่อมต่อ SoundWire บน Android กับ "B" NOT "A"

SoundWire จะไม่เชื่อมต่อหรือสตรีมหากคุณเชื่อมต่อกับอแด็ปเตอร์ที่ไม่ส่งสัญญาณ wifi ให้ป้อนที่อยู่ IP ของคุณลงในแอป Andoroid โดยใช้คำสั่งเทอร์มินัล ifconfig

ใช่มีความล่าช้า แต่แอพนี้ SoundWire เป็นระบบ "มัลติเชื่อมต่อกับ ip และลืม" ที่ง่ายที่สุด ไม่มีเมนูบ้า ๆ ให้ทำ และใช่มันยอมรับการเชื่อมต่อมากกว่าหนึ่ง ฉันใช้ 2 วันก่อน มันผนวกจำนวนอุปกรณ์ที่เชื่อมต่อกับมันในหน้าต่างหลักของอุปกรณ์ที่ส่งสัญญาณออก

การใช้สิ่งนี้เป็นการส่วนตัวในฐานะระบบวิทยุ wifi แบบหลายห้อง / ระยะสั้นในสถานที่ของฉันจนถึงทุกวันนี้

สนุก.


-4

ว้าวนี่มันแก่แล้ว ...

อย่างไรก็ตามใช้ VLC GUIs สวยตลอดทาง

  • เปิด VLC บนเดสก์ท็อปของคุณ
  • Hit Stream เลือกไฟล์ (เพิ่มจำนวนไฟล์ที่คุณต้องการ) Hit hit
  • 'ถัดไป' หากถูกต้อง
  • สำหรับปลายทางใหม่เลือก "http" (หรือสิ่งที่คุณต้องการใช้) เลือกแสดงในเครื่องหากคุณต้องการเล่นบนเครื่องที่คุณสตรีมด้วย บทสนทนาต่อไปนี้เป็นการอธิบายตนเอง

ไฟ VLC บนอุปกรณ์ Android ของคุณ กดไอคอนถัดจากปุ่มค้นหา (ลูกศรชี้ไปที่จุด) พิมพ์http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/สำหรับฉันนี้เป็นhttp://xxx.ca:8080/

ผ่านการทดสอบและทำงาน ทีนี้เราสามารถทำได้ในสมัยโบราณของ 9 มิ.ย. 56? อาจจะ แต่ฉันขี้เกียจเกินไปที่จะตรวจสอบบันทึกการยอมรับของ VLC;)


3
เขาไม่ได้มองหาโซลูชันการสตรีมเพลง / วิดีโอ
Cristian Ciupitu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.