Das Bluetooth Audio Profile A2DP unterstützt mehrere Codecs. Alle Geräte müssen SBC (Subband-Codec) unterstützen, dann können sie zusätzliche "optionale Codecs" wie MP3 und AAC oder "Nicht-A2DP" -Codecs wie apt-X unterstützen.
Natürlich können diese Codecs nicht verwendet werden, wenn der Empfänger sie nicht unterstützt. In diesem Fall greifen beide Geräte auf SBC zurück.
- Wie finde ich heraus, welche Codecs meine Hardware / ROM unterstützen?
- Wie finde ich heraus, welcher Codec derzeit verwendet wird? (Vielleicht hängt das auch vom Track ab, wenn er zum Beispiel MP3 / AAC-Dateien direkt ohne Neukodierung weitergibt.)
bluetooth
audio
a2dp
bluetooth-audio
Endolith
quelle
quelle
Antworten:
Auf meinem Cyanogen 10.1-Telefon (AOSP 4.2.2) ist es möglich, die Erfassung des Bluetooth-Verkehrs zu aktivieren. Anschließend können Sie dieses Capture in Wireshark laden und in der Aushandlungsphase ermitteln, welche Codecs das gekoppelte Audioausgabegerät unterstützt. Ich bin mir nicht sicher, welche Betriebssysteme dies unterstützen: Als ich diese Methode zum ersten Mal durchlief, behauptete sie, dass sie erst ab 4.4 unterstützt wird, bei CM auf einem Doubleshot ist dies jedoch eindeutig nicht der Fall. :-)
Angenommen, Sie haben das erforderliche Setup (rooted ~ 4.2.2 oder höher), dann sind dies die Schritte:
Sie können die Erfassungszeitstempel auch an den Zeitstempeln des CatLog-Protokolls ausrichten, um nach sinnvollen Protokolleinträgen zu suchen. Ich habe ein Paar gefunden und es geschickt vergessen, es in die Notizen aufzunehmen, auf denen dieser Beitrag basiert.
Sobald ich etwas mehr Zeit habe, hoffe ich, diese ziemlich langen Schritte auf eine App zu reduzieren, bin mir aber nicht sicher, ob es möglich ist und ob ich noch eine Weile Zeit habe. In der Zwischenzeit sind Vorschläge zur Verbesserung des oben genannten Prozesses willkommen.
quelle
Discover
drei Audio-Senken zurück. Eine Antwort aufGetCapabilities
fürACP SEID [2 - Audio Sink]
aufgenommenService: Media Codec - Audio MPEG-1,2 Audio
denen hatteMP3: True
. Ich habe die erfasste Protokolldatei auf github hochgeladen .In Bezug auf die Quelle gibt es mindestens 4 Codecs: SBC (obligatorisch), MP3 (MPEG12), AAC (MPEG24) und Sony ATRAC.
Die zugrunde liegende Software ist der "bluez" -Stack von Linux. Es unterstützt SBC und verfügt über eingeschränkte MP3-Funktionen.
Das Changelog für Version 3.25 (2009?) Lautet: "Eingeschränkte Unterstützung für MPEG12 / MP3-Codec hinzufügen".
Siehe auch die Ankündigung in Version 3.25 . Die MP3-Unterstützung scheint von gstreamer abhängig zu sein, der auf Android nicht verfügbar ist. Ich schätze also, SBC ist die einzige Option für A2DP, um zu booten.
PS: Die meisten A2DP-Geräte scheinen aufgrund von Patenten / Lizenzproblemen (einschließlich Linux) keine Unterstützung für MP3 / AAC zu haben.
quelle
Auf Geräten mit Nexus 4 (5.0.1) oder Nexus 7 (2012) (4.4.4) kann der Entwicklermodus zum Abrufen der Datei btsnoop_hci.log verwendet werden. "Bluetooth HCI Snoop Log aktivieren". Es ist nicht erforderlich, die Geräte zu rooten. Es scheint, dass beide Geräte kein Aptx anbieten. Ich teste dies mit Moto Stream (ohne Aptx) und Philips AEA2500 (mit Aptx).
quelle
[Diese Antwort geht hauptsächlich an ewedel, der mit Wireshark klarstellte, dass sich die Antwort in der Datei btsnoop_hci.log befindet. und prittstift69, um diese Protokolldatei auf einfache Weise zu erstellen.]
Dies ist ein einsteigerfreundliches, schrittweises Tutorial, in dem die bereits gegebenen Antworten zusammengefasst und die Ergebnisse von mir interpretiert werden.
Wie prittstift69 und andere erwähnten, können Sie unter Entwickleroptionen das "Bluetooth HCI Snoop Log aktivieren". Der komplizierteren Vorgehensweise von ewedel muss nicht gefolgt werden.
Schalten Sie zunächst Bluetooth auf dem Android-Gerät aus (ich nenne es "Telefon").
Aktivieren Sie das Bluetooth-HCI-Snoop-Protokoll in den Entwickleroptionen.
Schalten Sie Bluetooth am Telefon ein und verbinden Sie es mit dem Bluetooth-Empfänger (ich nenne es "Empfänger"). In diesem Schritt wird davon ausgegangen, dass der Empfänger zuvor mit dem Telefon gekoppelt wurde.
Spielen Sie Musik auf Ihrem Handy ab (idealerweise eine unkomprimierte WAV- oder FLAC-Datei). Sie brauchen nur zehn Sekunden. (Wahrscheinlich noch weniger)
Schalten Sie Bluetooth am Telefon aus.
Deaktivieren Sie das Bluetooth-HCI-Snoop-Protokoll
Übertragen Sie die Datei btsnoop_hci.log (ich habe sie in / sdcard / Android / Data / gefunden) auf Ihren Computer. Führen Sie wireshark auf Ihrem Computer aus und öffnen Sie die Datei btsnoop_hci.log
Filter for "btavdtp" (keine Anführungszeichen) Suche nach einer Nachricht vom Telefon an den Empfänger "Sent Command - SetConfiguration ...." Dies ist die Nachricht, die vom Telefon an den Empfänger mit der endgültigen Konfiguration gesendet wird, die für dieses Audio verwendet werden soll Nach dem Händeschütteln ist abgeschlossen. Der Text im Infofeld gibt Auskunft über die endgültige Konfiguration.
[SBC] Wenn es sich um SBC handelt, möchten Sie möglicherweise wissen, was der Bitpool ist. Entfernen Sie dazu den Filter für btavdtp, suchen Sie eine Nachricht mit dem Protokoll SBC und klicken Sie darauf. Erweitern Sie unten im Detailbereich die Informationen zum Bluetooth-SBC-Codec. Erweitern Sie dann einen beliebigen (oder alle) Frame-Daten. Dort sollte der von diesem Frame verwendete Bitpool deutlich angezeigt werden. Bei einer Samplerate von 35 ist die Wahrscheinlichkeit hoch, dass Ihre Samplerate 44,1 kHz beträgt, Sie verwenden Joint Stereo und das SBC-Audioprofil mittlerer Qualität ( http://soundexpert.org/news/-/blogs/bluetooth-audio) -Qualität-a2dp ). Die Bitrate für das komprimierte Audio beträgt dann 229 kbit / s SBC, was im Sound Expert-Test ( http://soundexpert.org/encoders-224-kbps ) einen Wert von 4,68 ergibt, der mit mp3 bei 110-130 kbit / s vergleichbar ist.
[APT-X] Wenn es sich um APT-X handelt, unterstützen sowohl Ihr Telefon als auch der Empfänger APT-X, und genau das wird verwendet. Angenommen, 16-Bit, 44,1 kHz, läuft der Codec mit 352 kbit / s.
quelle