Audio Share kann die Audiodaten eines Windows-/Linux-Computers über das Netzwerk an ein Android-Telefon weitergeben, sodass Ihr Telefon zum Lautsprecher des Computers wird. (Sie müssen keinen neuen Lautsprecher kaufen?)
Ein PC mit Windows oder Linux als Server.
Windows 10+ x86_64 mit Microsoft Visual C++ 2015-2022 Redistributable (x64) (vc_redist.x64.exe).
Linux mit PipeWire.
Der Audioplayer auf dem PC kann normal funktionieren. Das heißt, Sie sollten über eine Soundkarte verfügen und der Audio-Endpunkt sollte sich im Status „Verfügbar“ befinden. Andernfalls sind einige zusätzliche Einstellungen erforderlich.
Android 6.0 (API 23)+.
Laden Sie die APK-Datei und AudioShareServer.exe aus der neuesten Version herunter.
Öffnen Sie AudioShareServer.exe auf Ihrem Computer. Die Standardargumente funktionieren möglicherweise gut. Möglicherweise müssen Sie jedoch noch den Teil „Host“ überprüfen. Normalerweise ist es die LAN-Adresse, z. B. 192.168.xxx.xxx
. Stellen Sie sicher, dass Ihr Telefon über diese IP-Adresse eine Verbindung zu Ihrem Computer herstellen kann. Klicken Sie dann auf die Schaltfläche „Server starten“.
Installieren Sie APK auf Ihrem Telefon und öffnen Sie es. Ändern Sie den Teil „Host“, um sicherzustellen, dass er mit dem Wert des vorherigen Schritts übereinstimmt, z. B. 192.168.xxx.xxx
. Klicken Sie auf die Schaltfläche „▶“ und genießen Sie den Ton.
Vorsicht
Diese App unterstützt derzeit keine automatische Wiederverbindungsfunktion. Sobald die App beendet oder durch den Android-Energiesparmodus getrennt wird, wird die Audiowiedergabe gestoppt. Es wird empfohlen, die App zur Whitelist des Energiesparmodus hinzuzufügen. Dazu können Sie in den App-Einstellungen auf „Batterieoptimierungen ignorieren anfordern“ klicken.
Laden Sie audio-share-server-cmd-windows.zip
für Windows und audio-share-server-cmd-linux.tar.gz
für Linux herunter.
Entpacken Sie die Archivdatei.
Führen Sie einfach as-cmd -b
aus, um den Server zu starten. Es verwendet die erste LAN-Adresse als Host mit dem Port 65530
und wählt einen Standard-Audio-Endpunkt aus. Meistens funktioniert es gut. Wenn nicht, verwenden Sie as-cmd -h
um die Hilfe anzuzeigen und die richtigen Argumente festzulegen.
Windows fordert Sie auf, Firewall-Regeln automatisch hinzuzufügen, Linux hingegen nicht. Wenn Ihre Linux-Distribution also eine Firewall aktiviert, müssen Sie die Firewall manuell konfigurieren.
Installieren Sie APK auf Ihrem Telefon und öffnen Sie es. Ändern Sie den Teil „Host“, um sicherzustellen, dass er mit dem Wert des vorherigen Schritts übereinstimmt, z. B. 192.168.xxx.xxx
. Klicken Sie auf die Schaltfläche „▶“ und genießen Sie den Ton.
Adresse = 192.168.3.2 # ändern Sie es.port = 65530 # ändern Sie es. sudo firewall-cmd --add-rich-rule="rule familiäre = IPv4-Zieladresse = $ Adresse Port Port = $ Port Protokoll = TCP akzeptieren" Sudo Firewall -cmd --add-rich-rule="Regelfamilie=IPv4-Zieladresse=$Adresse Port Port=$Port Protokoll=UDP akzeptieren"sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --list-rich-rules
Ausgabe:
Regelfamilie = „ipv4“ Zieladresse = „192.168.3.2“ Port Port = „65530“ Protokoll = „tcp“ akzeptieren Regelfamilie = „ipv4“ Zieladresse = „192.168.3.2“ Port Port = „65530“ Protokoll = „udp“ akzeptieren
Adresse = 192.168.3.2 # ändern Sie es.port = 65530 # ändern Sie es. sudo firewall-cmd --remove-rich-rule = „rule family = IPv4-Zieladresse = $ Adresse Port Port = $ Port Protokoll = TCP akzeptieren“ Sudo Firewall -cmd --remove-rich-rule="Regelfamilie=IPv4-Zieladresse=$Adresse Port Port=$Port Protokoll=UDP akzeptieren"sudo firewall-cmd --runtime-to-permanent
Es gibt zwei Arten von Audioformaten:
Audioformat aufnehmen
Audioformat übertragen
Das Übertragungs-Audioformat besteht aus unkomprimierten PCM-Daten und bleibt beim Capture-Audioformat erhalten.
Sie können server.log
öffnen, um das übertragene Audioformat anzuzeigen.
[2024-10-26 14:52:48.967] [info] AudioFormat: encoding: ENCODING_PCM_16BIT channels: 2 sample_rate: 44100
Wie oben gezeigt, ist die Codierung 16 bit integer PCM
, die Kanalanzahl beträgt 2
und die Abtastrate beträgt 44.1kHz
.
Unter Android unterstützt die AudioTrack-API nur die unten aufgeführten PCM-Audioformate:
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 unterstützt diese fünf Arten von PCM-Formaten, aber ob ein bestimmtes Format verfügbar ist, hängt vom Audio-Endpunkt ab.
Unter Windows hängt das Standardformat für die Audioaufnahme vom Standardformat des Audioendpunkts ab. Sie können es ändern, indem Sie Sound Panel ( mmsys.cpl
) festlegen. Klicken Sie auf der Registerkarte Playback
des Sound Panels mit der rechten Maustaste auf einen verfügbaren Endpunkt, öffnen Sie das Eigenschaftenfenster, wählen Sie die Registerkarte Advanced
aus, ändern Sie Default Format
und klicken Sie auf Apply
. Dies kann auch in Realtek Audio Console
erfolgen, wenn Sie eine Realtek-Audiokarte verwenden. Das Aufnahme-Audioformat muss die gleichen Kanäle und die gleiche Abtastrate wie der Audio-Endpunkt haben. Wenn Sie sie also ändern möchten, können Sie nur das Sound Panel öffnen und das Standardformat festlegen. Um mit Linux kompatibel zu sein, kann der as-cmd
weiterhin die --channels
oder --sample-rate
unter Windows festlegen. Es wird jedoch auf das richtige Audioformat zurückgegriffen, da es in den meisten Fällen nicht das erwartete unterstützt.
https://learn.microsoft.com/en-us/windows/win32/coreaudio/device-formats
Unter Linux könnte das Standard-Audioaufnahmeformat vollständig von PipeWire bereitgestellt worden sein. Die Standard-Audiokodierung kann jedoch planar sein, z. B. SPA_AUDIO_FORMAT_F32P
. AudioTrack von Android kann es nicht abspielen. Daher wird die Standard-Audiokodierung auf SPA_AUDIO_FORMAT_F32_LE
(32-Bit-Float-PCM mit Little Endian) erzwungen. Die Standardkanäle und die Abtastrate bleiben unberührt und werden von PipeWire vorgegeben.
Beachten Sie, dass eine Verringerung der bitweisen Codierung oder der Abtastrate die Netzwerkbandbreite verringern, aber auch das Leerrauschen, auch Audioverlust genannt, erhöhen kann.
Die endgültige Lautstärke, die Sie hören, wird durch die folgende Lautstärke beeinflusst:
PC-Systemlautstärke.
Lautstärke des Audioplayers auf dem PC.
Medienlautstärke des Android-Systems.
„Audio-Lautstärke“ in der Android-App.
„Loudness Enhancer“ in der Android-App.
Sie sind alle unabhängig. Wenn Sie die Lautstärke Ihres PCs und Ihres Audioplayers maximieren und immer noch das Gefühl haben, dass dies nicht ausreicht, Sie aber die Lautstärke des Android-Systems nicht ändern möchten, können Sie „Loudness Enhancer“ in den Einstellungen der App erhöhen. Es hat keinen Einfluss auf die Systemlautstärke. Die „Audio-Lautstärke“ in der App kann die Lautstärke, die Sie hören, verringern, ohne die Systemlautstärke zu ändern.
Zu viel Lautstärke schadet Ihrem Ohr!!! „Loudness Enhancer“ hat ein Limit von 3000mB
. Für die meisten Fälle reicht es aus. Wenn Sie noch mehr Lautstärke benötigen, ändern Sie einfach direkt die Lautstärke des Android-Systems.
Die Realtek-Soundkarte kann den Audio-Endpunkt verfügbar machen, wenn der Lautsprecher nicht angeschlossen ist. Öffnen Sie einfach die Realtek-Audiokonsole, wählen Sie die Registerkarte „Erweiterte Geräteeinstellungen“ und schalten Sie die Option „Frontpanel-Popup-Dialogfeld deaktivieren“ ein. Dann wird der Audio-Endpunkt angezeigt. Andere Soundkarten verfügen möglicherweise über ähnliche Optionen. Wenn Sie es nicht finden können, wenden Sie sich an Methode 2.
Derzeit habe ich keine Möglichkeit gefunden, einen virtuellen Audio-Endpunkt zu erstellen. Die einzige Möglichkeit, dies zu erreichen, besteht darin, einen virtuellen Audiogerätetreiber zu schreiben. Zum Signieren ist jedoch ein EV-Code-Signing-Zertifikat erforderlich. Andernfalls kann der Benutzer es nicht installieren. Ich möchte nicht dafür bezahlen. Und es gibt viele virtuelle Audiogerätetreiber von Drittanbietern. Sie können einen, den Sie kennen, unter Virtual Audio Device Driver unter Windows finden oder veröffentlichen. Im Allgemeinen verfügt ein Treiber über eine INF-Datei. Klicken Sie mit der rechten Maustaste darauf und klicken Sie auf „Installieren“, um es zu installieren.
Dank PipeWire ist es für Linux sehr einfach, einen virtuellen Audio-Endpunkt zu erstellen, auch ohne Root-Rechte. Kopieren Sie einfach die folgende Konfiguration nach ~/.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 } } ]
Führen Sie dann systemctl --user restart pipewire
aus, um den PipeWire-Dienst neu zu starten.
Schließlich können Sie den hinzugefügten Endpunkt „Audio Share Sink“ sehen.
[abc@localhost ~]$ as-cmd -l [17.03.2024 22:46:14.563] [Info] Pipewire-Headerversion: 0.3.48, Bibliotheksversion: 0.3.67 endpoint_list: * ID: 30 Name: Audio Share Sink Gesamt: 1
Android-App
Android Studio importiert alle Abhängigkeiten automatisch.
Server-MFC
vcpkg ist für Installationsabhängigkeiten erforderlich.
Führen Sie vcpkg install asio protobuf spdlog[wchar] wil nlohmann-json
aus, um Deps zu installieren. Das vcpkg-Triplett ist x64-windows-static-md
.
Zum Kompilieren ist Visual Studio 2022 mit der Workload „Desktop-Entwicklung mit C++“ und der Option „C++ MFC für die neuesten v143-Build-Tools (x86 und x64)“ erforderlich.
Server-CMD
CMake und ein Compiler, der C++20 unterstützt, sind erforderlich. Linux benötigt außerdem libpipewire-dev
oder pipewire-devel
.
Installieren Sie vcpkg und legen Sie die Umgebung VPCKG_ROOT
fest. Diese Umgebung wird von CMakePresets.json
benötigt.
Führen Sie vcpkg install asio protobuf cxxopts
aus, um Deps zu installieren. Das vcpkg-Triplett ist x64-windows-static-md
für Windows und x64-linux
für Linux. Darüber hinaus muss Windows vcpkg install spdlog[wchar] wil
und Linux vcpkg install spdlog
ausführen.
Führen Sie zum Konfigurieren cmake --preset linux-Release
aus.
Führen Sie zum Erstellen cmake --build --preset linux-Release
aus. Der as-cmd
befindet sich unter out/install/linux-Release/bin/as-cmd
.
Ersetzen Sie für Windows in den beiden vorherigen Schritten linux
durch windows
.
Dieses Projekt ist unter der Apache-2.0-Lizenz lizenziert.
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 lizenziert unter der MIT-Lizenz
WIL lizenziert unter der MIT-Lizenz
Asio lizenziert unter der BSL-1.0-Lizenz.
Protokollpuffer, lizenziert unter der LIZENZ.
spdlog ist unter der MIT-Lizenz lizenziert.
{fmt} lizenziert unter der LIZENZ.
cxxopts ist unter der MIT-Lizenz lizenziert
Netty ist unter der Apache-2.0-Lizenz lizenziert.
Material Components für Android, lizenziert unter der Apache-2.0-Lizenz.
Protobuf-Plugin für Gradle, lizenziert unter der LIZENZ.
PipeWire ist unter der LIZENZ lizenziert.
Mosklia
YuHuanTin