Audio Share dapat membagikan audio komputer Windows/Linux ke ponsel Android melalui jaringan, sehingga ponsel Anda menjadi speaker komputer. (Anda tidak perlu membeli speaker baru?.)
PC dengan Windows atau Linux sebagai servernya.
Windows 10+ x86_64 dengan Microsoft Visual C++ 2015-2022 Dapat Didistribusikan Ulang (x64) (vc_redist.x64.exe).
Linux dengan PipeWire.
Pemutar audio di PC dapat bekerja dengan normal. Artinya Anda harus memiliki kartu suara dan titik akhir audio dalam status tersedia. Jika tidak, Anda memerlukan beberapa pengaturan tambahan.
Android 6.0(API 23)+.
Unduh file APK dan AudioShareServer.exe dari rilis terbaru.
Buka AudioShareServer.exe di komputer Anda. Argumen default mungkin berfungsi dengan baik. Namun Anda mungkin masih harus memeriksa bagian "Host". Biasanya alamat LAN, seperti 192.168.xxx.xxx
. Pastikan ponsel Anda dapat menghubungkan komputer Anda melalui alamat IP ini. Kemudian Klik tombol "Mulai Server".
Instal APK ke ponsel Anda dan buka. Ubah bagian "Host" untuk memastikan sama dengan nilai langkah sebelumnya, misalnya 192.168.xxx.xxx
. Klik tombol "▶" dan nikmati audionya?.
Peringatan
Aplikasi ini tidak mendukung fitur penyambungan ulang otomatis saat ini. Setelah aplikasi dimatikan atau diputuskan sambungannya oleh penghemat daya Android, pemutaran audio akan dihentikan. Disarankan untuk menambahkan aplikasi ke daftar putih penghemat daya. Untuk melakukan ini, Anda dapat menekan "Minta Abaikan Pengoptimalan Baterai" pada Pengaturan aplikasi.
Unduh audio-share-server-cmd-windows.zip
untuk Windows, audio-share-server-cmd-linux.tar.gz
untuk Linux.
Buka kompresi file arsip.
Jalankan saja as-cmd -b
untuk memulai server. Ini akan menggunakan alamat LAN pertama sebagai host dengan port 65530
dan memilih titik akhir audio default. Seringkali, ini berfungsi dengan baik. Jika tidak, gunakan as-cmd -h
untuk melihat bantuan, dan tetapkan argumen yang tepat.
Windows akan meminta Anda untuk menambahkan aturan firewall secara otomatis sedangkan Linux tidak. Jadi jika distribusi Linux Anda mengaktifkan firewall, Anda perlu mengkonfigurasi firewall secara manual.
Instal APK ke ponsel Anda dan buka. Ubah bagian "Host" untuk memastikan sama dengan nilai langkah sebelumnya, misalnya 192.168.xxx.xxx
. Klik tombol "▶" dan nikmati audionya?.
alamat=192.168.3.2 # ubah it.port=65530 # ubah it.sudo firewall-cmd --add-rich-rule="rule family=ipv4 alamat tujuan=$alamat port port=$protokol port=tcp terima"sudo firewall -cmd --add-rich-rule="rule family=alamat tujuan ipv4=$alamat port port=$protokol port=udp terima"sudo firewall-cmd --runtime-ke-permanen
sudo firewall-cmd --daftar-kaya-aturan
Keluaran:
aturan keluarga = "ipv4" alamat tujuan = "192.168.3.2" port port = "65530" protokol = "tcp" terima aturan keluarga = "ipv4" alamat tujuan = "192.168.3.2" port port = "65530" protokol = "udp" terima
alamat=192.168.3.2 # ubah it.port=65530 # ubah it.sudo firewall-cmd --remove-rich-rule="rule family=ipv4 alamat tujuan=$alamat port port=$protokol port=tcp terima"sudo firewall -cmd --remove-rich-rule="rule family=alamat tujuan ipv4=$alamat port port=$protokol port=udp terima"sudo firewall-cmd --runtime-ke-permanen
Ada dua jenis format audio:
Tangkap format audio
Mentransfer format audio
Format audio transfer adalah data PCM yang tidak terkompresi dan tetap sama dengan format audio pengambilan.
Anda dapat membuka server.log
untuk melihat format audio transfer.
[2024-10-26 14:52:48.967] [info] AudioFormat: encoding: ENCODING_PCM_16BIT channels: 2 sample_rate: 44100
Seperti yang ditunjukkan di atas, pengkodeannya adalah 16 bit integer PCM
, jumlah saluran adalah 2
, dan laju sampel adalah 44.1kHz
.
Di Android, AudioTrack API hanya mendukung format audio PCM yang tercantum di bawah:
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 mendukung 5 jenis format PCM ini, namun ketersediaan format tertentu bergantung pada titik akhir audio.
Di Windows, format audio pengambilan default bergantung pada format default titik akhir audio. Anda dapat mengubahnya dengan mengatur Sound Panel ( mmsys.cpl
). Di tab Playback
Panel Suara, klik kanan satu titik akhir yang tersedia, dan buka Panel Properti, lalu pilih tab Advanced
, dan ubah Default Format
dan klik Apply
. Hal ini juga dapat dilakukan di Realtek Audio Console
, jika Anda menggunakan kartu audio Realtek. Format audio pengambilan harus memiliki saluran dan laju sampel yang sama dengan titik akhir audio. Jadi jika ingin mengubahnya, Anda hanya bisa membuka Sound Panel dan mengatur format default. Agar kompatibel dengan Linux, as-cmd
masih dapat mengatur --channels
atau --sample-rate
di Windows. Namun, format audio tersebut akan dikembalikan ke format audio yang sesuai, karena pada sebagian besar kasus, format tersebut tidak mendukung format audio yang diharapkan.
https://learn.microsoft.com/en-us/windows/win32/coreaudio/device-formats
Di Linux, format audio pengambilan default dapat diberikan oleh PipeWire sepenuhnya. Namun, pengkodean audio default mungkin planar, seperti SPA_AUDIO_FORMAT_F32P
. AudioTrack Android tidak bisa memutarnya. Jadi pengkodean audio default dipaksa ke SPA_AUDIO_FORMAT_F32_LE
(PCM float 32 bit dengan little endian). Saluran default dan laju sampel tidak tersentuh dan diberikan oleh PipeWire.
Perhatikan bahwa menurunkan pengkodean bitwise atau laju sampel dapat menurunkan bandwidth jaringan, namun juga dapat meningkatkan kebisingan kosong, yang juga dikenal sebagai kehilangan audio.
Volume akhir yang Anda dengar dipengaruhi oleh volume berikut:
Volume sistem PC.
Volume pemutar audio di PC.
Volume media sistem Android.
"Volume Audio" di aplikasi Android.
"Penambah Kenyaringan" di aplikasi Android.
Mereka semua mandiri. Jika Anda memaksimalkan volume PC dan pemutar audio, dan masih merasa itu belum cukup, namun tidak ingin mengubah volume sistem Android, Anda dapat meningkatkan "Loudness Enhancer" di Pengaturan aplikasi. Itu tidak akan mempengaruhi volume sistem. "Volume Audio" pada aplikasi dapat memperkecil volume yang Anda dengar tanpa mengubah volume sistem.
Terlalu keras akan melukai telinga Anda!!! "Loudness Enhancer" memiliki batas 3000mB
. Ini cukup untuk sebagian besar kasus. Jika Anda masih membutuhkan lebih banyak kenyaringan, langsung saja ubah volume sistem Android.
Kartu suara Realtek dapat membuat titik akhir audio tersedia ketika speaker tidak dicolokkan. Cukup buka Konsol Audio Realtek, pilih tab "Pengaturan lanjutan perangkat", dan aktifkan opsi "Nonaktifkan dialog popup depan panel depan". Kemudian titik akhir audio akan muncul. Kartu suara lain mungkin memiliki opsi serupa. Jika Anda tidak dapat menemukannya, buka Metode 2.
Saat ini, saya belum menemukan cara untuk membuat titik akhir audio virtual. Satu-satunya cara untuk mencapainya adalah dengan menulis driver perangkat audio virtual. Namun diperlukan Sertifikat Penandatanganan Kode EV untuk menandatanganinya. Jika tidak, pengguna tidak dapat menginstalnya. Saya tidak ingin membayarnya. Dan ada banyak driver perangkat audio virtual pihak ketiga. Anda dapat menemukannya atau mempostingnya yang Anda ketahui di Virtual Audio Device Driver di Windows. Umumnya, driver memiliki file INF. Klik kanan dan klik "Instal" untuk menginstalnya.
Berkat PipeWire, sangat mudah bagi Linux untuk membuat titik akhir audio virtual, bahkan tanpa hak akses root. Cukup salin konfigurasi di bawah ini ke ~/.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 } } ]
Kemudian jalankan systemctl --user restart pipewire
untuk memulai ulang layanan PipeWire.
Terakhir, Anda dapat melihat titik akhir tambahan "Audio Share Sink".
[abc@localhost ~]$as-cmd -l [17-03-2024 22:46:14.563] [info] pipewire header_version: 0.3.48, perpustakaan_version: 0.3.67 endpoint_list: * id: 30 nama: Sink Berbagi Audio jumlah: 1
Aplikasi Android
Android Studio akan mengimpor semua dependensi secara otomatis.
Server MFC
vcpkg diperlukan untuk menginstal dependensi.
Jalankan vcpkg install asio protobuf spdlog[wchar] wil nlohmann-json
untuk menginstal deps. Triplet vcpkg adalah x64-windows-static-md
.
Visual Studio 2022 dengan beban kerja "Pengembangan desktop dengan C++" dan opsi "C++ MFC untuk alat build v143 terbaru (x86 & x64)" diperlukan untuk kompilasi.
cmd server
CMake dan kompiler mendukung C++20 diperlukan. Linux juga memerlukan libpipewire-dev
atau pipewire-devel
.
Instal vcpkg, dan atur VPCKG_ROOT
env. Env ini diperlukan oleh CMakePresets.json
.
Jalankan vcpkg install asio protobuf cxxopts
untuk menginstal deps. Triplet vcpkg adalah x64-windows-static-md
untuk Windows, x64-linux
untuk Linux. Selain itu, Windows perlu menjalankan vcpkg install spdlog[wchar] wil
, dan Linux perlu menjalankan vcpkg install spdlog
.
Jalankan cmake --preset linux-Release
untuk mengonfigurasi.
Jalankan cmake --build --preset linux-Release
untuk membangun. as-cmd
terletak di out/install/linux-Release/bin/as-cmd
.
Untuk Windows, ganti linux
ke windows
pada dua langkah sebelumnya.
Proyek ini dilisensikan di bawah lisensi 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 dilisensikan di bawah lisensi MIT
WIL berlisensi di bawah lisensi MIT
Asio berlisensi di bawah lisensi BSL-1.0.
Protokol Buffer dilisensikan berdasarkan LISENSI.
spdlog dilisensikan di bawah lisensi MIT.
{fmt} dilisensikan berdasarkan LISENSI.
cxxopts dilisensikan di bawah lisensi MIT
Netty berlisensi di bawah lisensi Apache-2.0.
Komponen Material untuk Android dilisensikan di bawah lisensi Apache-2.0.
Plugin Protobuf untuk Gradle dilisensikan di bawah LISENSI.
PipeWire dilisensikan berdasarkan LISENSI.
Moskow
YuHuanTin