Audio Share สามารถแชร์เสียงของคอมพิวเตอร์ Windows/Linux ไปยังโทรศัพท์ Android ผ่านเครือข่าย ดังนั้นโทรศัพท์ของคุณจึงกลายเป็นลำโพงของคอมพิวเตอร์ (คุณไม่จำเป็นต้องซื้อลำโพงใหม่?.)
พีซีที่มี Windows หรือ Linux เป็นเซิร์ฟเวอร์
Windows 10+ x86_64 พร้อม Microsoft Visual C++ 2015-2022 แจกจ่ายต่อได้ (x64) (vc_redist.x64.exe)
ลินุกซ์พร้อม PipeWire
เครื่องเล่นเสียงบนพีซีสามารถทำงานได้ตามปกติ กล่าวคือคุณควรมีการ์ดเสียงและจุดสิ้นสุดเสียงอยู่ในสถานะพร้อมใช้งาน มิฉะนั้น คุณจะต้องตั้งค่าเพิ่มเติม
ระบบปฏิบัติการ Android 6.0 (เอพีไอ 23)+
ดาวน์โหลดไฟล์ APK และ AudioShareServer.exe จากรุ่นล่าสุด
เปิด AudioShareServer.exe บนคอมพิวเตอร์ของคุณ อาร์กิวเมนต์เริ่มต้นอาจทำงานได้ดี แต่คุณอาจต้องตรวจสอบส่วน "โฮสต์" โดยปกติจะเป็นที่อยู่ LAN เช่น 192.168.xxx.xxx
ตรวจสอบให้แน่ใจว่าโทรศัพท์ของคุณสามารถเชื่อมต่อคอมพิวเตอร์ของคุณผ่านที่อยู่ IP นี้ จากนั้นคลิกปุ่ม "เริ่มเซิร์ฟเวอร์"
ติดตั้ง APK ลงในโทรศัพท์ของคุณแล้วเปิด แก้ไขส่วน "Host" เพื่อให้แน่ใจว่าเหมือนกับค่าของขั้นตอนก่อนหน้า เช่น 192.168.xxx.xxx
คลิกปุ่ม "▶" และเพลิดเพลินกับเสียง?.
คำเตือน
แอปนี้ไม่รองรับคุณลักษณะการเชื่อมต่อใหม่อัตโนมัติในปัจจุบัน เมื่อแอปถูกปิดหรือตัดการเชื่อมต่อโดยโปรแกรมประหยัดพลังงานของ Android การเล่นเสียงจะหยุดลง แนะนำให้เพิ่มแอปลงในไวท์ลิสต์ของการประหยัดพลังงาน ในการดำเนินการนี้ คุณสามารถกด "ขอเพิกเฉยการเพิ่มประสิทธิภาพแบตเตอรี่" ในการตั้งค่าของแอป
ดาวน์โหลด audio-share-server-cmd-windows.zip
สำหรับ Windows, audio-share-server-cmd-linux.tar.gz
สำหรับ Linux
คลายการบีบอัดไฟล์เก็บถาวร
เพียงรัน as-cmd -b
เพื่อเริ่มเซิร์ฟเวอร์ โดยจะใช้ที่อยู่ LAN แรกเป็นโฮสต์ที่มีพอร์ต 65530
และเลือกจุดสิ้นสุดเสียงเริ่มต้น โดยส่วนใหญ่แล้วจะทำงานได้ดี ถ้าไม่เช่นนั้น ให้ใช้ as-cmd -h
เพื่อดูวิธีใช้ และตั้งค่าอาร์กิวเมนต์ที่เหมาะสม
Windows จะขอให้คุณเพิ่มกฎไฟร์วอลล์โดยอัตโนมัติในขณะที่ Linux ไม่ทำ ดังนั้นหากการแจกจ่าย Linux ของคุณเปิดใช้งานไฟร์วอลล์ คุณจะต้องกำหนดค่าไฟร์วอลล์ด้วยตนเอง
ติดตั้ง APK ลงในโทรศัพท์ของคุณแล้วเปิด แก้ไขส่วน "Host" เพื่อให้แน่ใจว่าเหมือนกับค่าของขั้นตอนก่อนหน้า เช่น 192.168.xxx.xxx
คลิกปุ่ม "▶" และเพลิดเพลินกับเสียง?.
ที่อยู่=192.168.3.2 # change it.port=65530 # เปลี่ยนit.sudo firewall-cmd --add-rich-rule="rule family=ipv4 ปลายทางที่อยู่=$address port port=$port protocol=tcp ยอมรับ"sudo firewall -cmd --add-rich-rule="rule family=ipv4 Destination address=$address port port=$port protocol=udp ยอมรับ"sudo firewall-cmd --รันไทม์ถึงถาวร
sudo firewall-cmd --list-rich-rules
เอาท์พุท:
ครอบครัวกฎ = "ipv4" ที่อยู่ปลายทาง = "192.168.3.2" พอร์ตพอร์ต = "65530" protocol = "tcp" ยอมรับ ครอบครัวกฎ = "ipv4" ที่อยู่ปลายทาง = "192.168.3.2" พอร์ตพอร์ต = "65530" protocol = "udp" ยอมรับ
ที่อยู่=192.168.3.2 # change it.port=65530 # เปลี่ยนit.sudo firewall-cmd --remove-rich-rule="rule family=ipv4 ที่อยู่ปลายทาง=$address port port=$port protocol=tcp ยอมรับ"ไฟร์วอลล์ sudo -cmd --remove-rich-rule="rule family=ipv4 Destination address=$address port port=$port protocol=udp ยอมรับ"sudo ไฟร์วอลล์ cmd --runtime-to-ถาวร
รูปแบบเสียงมีสองประเภท:
บันทึกรูปแบบเสียง
ถ่ายโอนรูปแบบเสียง
รูปแบบเสียงที่ถ่ายโอนเป็นข้อมูล PCM ที่ไม่มีการบีบอัด และยังคงเหมือนเดิมกับรูปแบบเสียงที่บันทึก
คุณสามารถเปิด server.log
เพื่อดูรูปแบบเสียงที่ถ่ายโอนได้
[2024-10-26 14:52:48.967] [info] AudioFormat: encoding: ENCODING_PCM_16BIT channels: 2 sample_rate: 44100
ดังที่แสดงไว้ข้างต้น การเข้ารหัสคือ 16 bit integer PCM
จำนวนช่องสัญญาณคือ 2
และอัตราตัวอย่างคือ 44.1kHz
บน Android นั้น AudioTrack API รองรับเฉพาะรูปแบบเสียง PCM ที่แสดงด้านล่าง:
ENCODING_PCM_FLOAT ENCODING_PCM_8BIT ENCODING_PCM_16BIT ENCODING_PCM_24BIT_PACKED ENCODING_PCM_32BIT
https://developer.android.com/reference/android/media/AudioFormat#encoding
Audio Share รองรับรูปแบบ PCM ทั้ง 5 ประเภทนี้ แต่รูปแบบเฉพาะจะมีให้ใช้งานหรือไม่นั้นขึ้นอยู่กับจุดสิ้นสุดเสียง
บน Windows รูปแบบเสียงการจับเริ่มต้นจะขึ้นอยู่กับรูปแบบเริ่มต้นของจุดสิ้นสุดเสียง คุณสามารถเปลี่ยนได้โดยการตั้งค่าแผงเสียง ( mmsys.cpl
) ในแท็บ Playback
ของ Sound Panel คลิกขวาที่จุดสิ้นสุดที่มีอยู่แล้วเปิด Properties Panel แล้วเลือกแท็บ Advanced
และเปลี่ยน Default Format
แล้วคลิก Apply
ซึ่งสามารถทำได้ใน Realtek Audio Console
หากคุณใช้การ์ดเสียง Realtek รูปแบบเสียงที่บันทึกจะต้องมีช่องสัญญาณและอัตราตัวอย่างเดียวกันกับจุดสิ้นสุดเสียง ดังนั้นหากคุณต้องการเปลี่ยนแปลง คุณสามารถเปิดได้เฉพาะแผงเสียงและตั้งค่ารูปแบบเริ่มต้นเท่านั้น เพื่อให้เข้ากันได้กับ Linux as-cmd
ยังคงสามารถตั้งค่า --channels
หรือ --sample-rate
บน Windows อย่างไรก็ตาม ไฟล์จะกลับไปใช้รูปแบบเสียงที่เหมาะสม เนื่องจากส่วนใหญ่ไม่รองรับรูปแบบที่คาดไว้
https://learn.microsoft.com/en-us/windows/win32/coreaudio/device-formats
บน Linux PipeWire สามารถกำหนดรูปแบบเสียงการจับภาพเริ่มต้นได้อย่างสมบูรณ์ อย่างไรก็ตาม การเข้ารหัสเสียงเริ่มต้นอาจเป็นภาพระนาบ เช่น SPA_AUDIO_FORMAT_F32P
AudioTrack ของ Android ไม่สามารถเล่นได้ ดังนั้นการเข้ารหัสเสียงเริ่มต้นจึงถูกบังคับให้ SPA_AUDIO_FORMAT_F32_LE
(PCM แบบลอย 32 บิตพร้อมเอนเดียนเล็กน้อย) ช่องเริ่มต้นและอัตราตัวอย่างจะไม่ถูกแตะต้องและกำหนดโดย PipeWire
โปรดทราบว่าการลดการเข้ารหัสบิตหรืออัตราตัวอย่างสามารถลดแบนด์วิดท์เครือข่ายได้ แต่ยังสามารถเพิ่มสัญญาณรบกวนที่ว่างเปล่าหรือที่เรียกว่าการสูญเสียเสียงได้อีกด้วย
ระดับเสียงสุดท้ายที่คุณได้ยินจะได้รับผลกระทบจากระดับเสียงต่อไปนี้:
ระดับเสียงของระบบพีซี
ระดับเสียงของเครื่องเล่นเสียงบนพีซี
ระดับเสียงสื่อของระบบ Android
"ระดับเสียง" บนแอป Android
"ตัวเพิ่มความดัง" บนแอป Android
พวกเขาทั้งหมดเป็นอิสระ หากคุณเพิ่มระดับเสียงของพีซีและเครื่องเล่นเสียงสูงสุด และยังรู้สึกว่ายังไม่เพียงพอ แต่ไม่ต้องการเปลี่ยนระดับเสียงของระบบ Android คุณสามารถเพิ่ม "ตัวเพิ่มความดัง" ได้ในการตั้งค่าของแอป มันจะไม่ส่งผลกระทบต่อระดับเสียงของระบบ "ระดับเสียง" บนแอปสามารถลดระดับเสียงที่คุณได้ยินโดยไม่ต้องเปลี่ยนระดับเสียงของระบบ
เสียงดังมากไปจะเจ็บหู!!! "ตัวเพิ่มความดัง" มีขีดจำกัดอยู่ที่ 3000mB
ก็เพียงพอแล้วสำหรับกรณีส่วนใหญ่ หากคุณยังคงต้องการความดังเพิ่ม เพียงเปลี่ยนระดับเสียงของระบบ Android โดยตรง
การ์ดเสียง Realtek สามารถทำให้จุดสิ้นสุดเสียงพร้อมใช้งานเมื่อลำโพงไม่ได้เสียบปลั๊ก เพียงเปิดคอนโซลเสียง Realtek เลือกแท็บ "การตั้งค่าอุปกรณ์ขั้นสูง" และเปิดตัวเลือก "ปิดใช้งานกล่องโต้ตอบป๊อปอัปด้านหน้าแผงด้านหน้า" จากนั้นจุดสิ้นสุดเสียงจะปรากฏขึ้น การ์ดเสียงอื่นอาจมีตัวเลือกที่คล้ายกัน หากหาไม่พบ ให้หันไปใช้วิธีที่ 2
ปัจจุบันฉันยังไม่พบวิธีสร้างจุดสิ้นสุดเสียงเสมือน วิธีเดียวที่จะบรรลุผลคือเขียนไดรเวอร์อุปกรณ์เสียงเสมือน แต่จำเป็นต้องมีใบรับรองการลงนามรหัส EV เพื่อลงนาม มิฉะนั้นผู้ใช้จะไม่สามารถติดตั้งได้ ฉันไม่ต้องการจ่ายเงินสำหรับมัน และมีไดรเวอร์อุปกรณ์เสียงเสมือนของบริษัทอื่นอยู่มากมาย คุณสามารถค้นหาหรือโพสต์ที่คุณรู้จักได้ที่ Virtual Audio Device Driver บน Windows โดยทั่วไป ไดรเวอร์จะมีไฟล์ INF คลิกขวาแล้วคลิก "ติดตั้ง" เพื่อติดตั้ง
ต้องขอบคุณ PipeWire ที่ทำให้ Linux สามารถสร้างอุปกรณ์ปลายทางเสียงเสมือนได้อย่างง่ายดาย แม้ว่าจะไม่มีสิทธิ์ใช้งานรูทก็ตาม เพียงคัดลอกการกำหนดค่าด้านล่างไปที่ ~/.config/pipewire/pipewire.conf.d/audio-share-sink.conf
context.objects = [ { factory = adapter args = { factory.name = support.null-audio-sink node.name = "Audio Share Sink" media.class = Audio/Sink object.linger = true audio.position = [ FL FR ] priority.session = 1009 priority.driver = 1009 monitor.channel-volumes = true monitor.passthrough = true } } ]
จากนั้นรัน systemctl --user restart pipewire
เพื่อรีสตาร์ทบริการ PipeWire
สุดท้าย คุณจะเห็นปลายทางที่เพิ่มเข้ามา "Audio Share Sink"
[abc@localhost ~]$ as-cmd -l [2024-03-17 22:46:14.563] [ข้อมูล] pipewire header_version: 0.3.48, Library_version: 0.3.67 endpoint_list: * id: 30 ชื่อ: Audio Share Sink ทั้งหมด: 1
แอพ Android
Android Studio จะนำเข้าการอ้างอิงทั้งหมดโดยอัตโนมัติ
เซิร์ฟเวอร์เอ็มเอฟซี
จำเป็นต้องมี vcpkg สำหรับการอ้างอิงการติดตั้ง
รัน vcpkg install asio protobuf spdlog[wchar] wil nlohmann-json
เพื่อติดตั้ง deps vcpkg triplet คือ x64-windows-static-md
Visual Studio 2022 พร้อมเวิร์กโหลด "การพัฒนาเดสก์ท็อปด้วย C++" และตัวเลือก "C++ MFC สำหรับเครื่องมือสร้าง v143 ล่าสุด (x86 และ x64)" เป็นสิ่งจำเป็นสำหรับการคอมไพล์
เซิร์ฟเวอร์ CMD
จำเป็นต้องมี CMake และคอมไพเลอร์รองรับ C ++ 20 Linux ยังต้องการ libpipewire-dev
หรือ pipewire-devel
ติดตั้ง vcpkg และตั้งค่า VPCKG_ROOT
env CMakePresets.json
ต้องการ env นี้
รัน vcpkg install asio protobuf cxxopts
เพื่อติดตั้ง deps vcpkg triplet คือ x64-windows-static-md
สำหรับ Windows, x64-linux
สำหรับ Linux นอกจากนี้ Windows จำเป็นต้องรัน vcpkg install spdlog[wchar] wil
และ Linux จำเป็นต้องรัน vcpkg install spdlog
เรียกใช้ cmake --preset linux-Release
เพื่อกำหนดค่า
เรียกใช้ cmake --build --preset linux-Release
เพื่อสร้าง as-cmd
ตั้งอยู่ที่ out/install/linux-Release/bin/as-cmd
สำหรับ Windows ให้แทนที่ linux
เป็น windows
ในสองขั้นตอนก่อนหน้า
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต Apache-2.0
Copyright 2022-2024 mkckr0 <https://github.com/mkckr0> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
nlohmann/json ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
WIL ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
Asio ได้รับใบอนุญาตภายใต้ใบอนุญาต BSL-1.0
Protocol Buffers ได้รับอนุญาตภายใต้ LICENSE
spdlog ได้รับอนุญาตภายใต้ใบอนุญาต MIT
{fmt} ได้รับใบอนุญาตภายใต้ใบอนุญาต
cxxopts ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
Netty ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache-2.0
ส่วนประกอบวัสดุสำหรับ Android ได้รับอนุญาตภายใต้ใบอนุญาต Apache-2.0
ปลั๊กอิน Protobuf สำหรับ Gradle ได้รับอนุญาตภายใต้ LICENSE
PipeWire ได้รับอนุญาตภายใต้ LICENSE
มอสเคลีย
หยูหวนติน