Profil audio A2DP Bluetooth obsługuje wiele kodeków. Wszystkie urządzenia muszą obsługiwać SBC (kodek podpasmowy), a następnie mogą obsługiwać dodatkowe „opcjonalne kodeki”, takie jak MP3 i AAC, lub kodeki „inne niż A2DP”, takie jak apt-X.
Oczywiście tych kodeków nie można faktycznie użyć, jeśli odbiornik również ich nie obsługuje, w którym to przypadku oba urządzenia wracają do SBC.
- Jak sprawdzić, które kodeki obsługują mój sprzęt / pamięć ROM?
- Jak sprawdzić, który kodek jest aktualnie używany? (Być może zależy to również od ścieżki, jeśli na przykład przekazuje ona pliki MP3 / AAC bezpośrednio bez ponownego kodowania)
bluetooth
audio
a2dp
bluetooth-audio
endolit
źródło
źródło
Odpowiedzi:
Na moim telefonie Cyanogen 10.1 (AOSP 4.2.2) można włączyć przechwytywanie ruchu Bluetooth. Następnie możesz załadować to przechwycenie do Wireshark i spojrzeć na fazę negocjacji, aby określić, które kodeki obsługuje sparowane urządzenie wyjściowe audio. Nie jestem pewien, jakie systemy operacyjne to obsługują: kiedy po raz pierwszy natknąłem się na tę metodę, domagał się wsparcia już od 4.4, ale najwyraźniej nie w przypadku CM na Doubleshot. :-)
Zakładając, że masz wymaganą konfigurację (zrootowaną ~ 4.2.2 lub nowszą), są to następujące kroki:
Możesz także ustawić znaczniki czasu przechwytywania w linii ze znacznikami czasu dziennika CatLog, aby wyszukać sugestywne wpisy w dzienniku. Znalazłem parę i sprytnie zapomniałem dołączyć je do notatek, na których oparty jest ten post.
Kiedy będę miał więcej czasu, mam nadzieję zredukować ten dość długi zestaw kroków do aplikacji, ale nie jestem pewien, czy jest to możliwe i i tak jeszcze nie będzie czasu. Tymczasem mile widziane są sugestie ulepszenia powyższego procesu.
źródło
Discover
zwrócone trzy zlewy audio. OdpowiedźGetCapabilities
naACP SEID [2 - Audio Sink]
włączone,Service: Media Codec - Audio MPEG-1,2 Audio
które miałyMP3: True
. Przesłałem przechwycony plik dziennika do github .Patrząc na źródło, istnieją co najmniej 4 kodeki: SBC (obowiązkowe), MP3 (MPEG12), AAC (MPEG24) i ATRAC Sony.
Podstawowym oprogramowaniem jest stos „bluez” linuksa. Obsługuje SBC i ma ograniczone możliwości MP3.
Dziennik zmian dla wersji 3.25 (2009?) Brzmi: „Dodaj ograniczone wsparcie dla kodeka MPEG12 / MP3”.
Zobacz także ogłoszenie v3.25 . Obsługa MP3 wydaje się zależeć od gstreamera, który nie jest dostępny na Androidzie, więc domyślam się, że SBC jest jedyną opcją do uruchomienia A2DP.
PS: Większość urządzeń A2DP wydaje się nie obsługiwać MP3 / AAC z powodu problemów z patentami / licencjonowaniem (w tym Linux).
źródło
W urządzeniach Nexus 4 (5.0.1) lub Nexus 7 (2012) (4.4.4) można użyć trybu programisty, aby uzyskać plik btsnoop_hci.log. „Włącz dziennik snoop Bluetooth HCI”. Zrootowanie urządzeń nie jest konieczne. Wygląda na to, że oba urządzenia nie oferują aptx. Testuję to z Moto Stream (bez aptx) i Philips AEA2500 (z aptx).
źródło
[Podziękowania za tę odpowiedź należą głównie do ewedel, który wyjaśnił, że odpowiedź znajduje się w pliku btsnoop_hci.log, używając Wireshark; i prittstift69, za udostępnienie łatwego sposobu utworzenia tego pliku dziennika.]
Jest to przyjazny dla początkujących samouczek krok po kroku, podsumowujący już udzielone odpowiedzi, z pewną interpretacją moich wyników.
Jak wspomniano prittstift69 i inne, możesz „włączyć dziennik snoop Bluetooth HCI” w opcjach programisty. Nie trzeba stosować bardziej skomplikowanego podejścia sugerowanego przez ewedel.
Zacznij od wyłączenia Bluetooth na urządzeniu z Androidem (nazywam to „telefonem”).
Włącz dziennik snoop Bluetooth HCI w Opcjach programisty.
Włącz Bluetooth w telefonie i podłącz go do odbiornika Bluetooth (nazywam go „odbiornikiem”). W tym kroku założono, że odbiornik został wcześniej sparowany z telefonem.
Odtwarzaj muzykę na swoim telefonie (najlepiej nieskompresowany plik WAV lub FLAC). Dziesięć sekund to wszystko, czego potrzebujesz. (Prawdopodobnie nawet mniej)
Wyłącz Bluetooth w telefonie.
Wyłącz dziennik snoop Bluetooth HCI
Przenieś plik btsnoop_hci.log (znalazłem go w / sdcard / Android / Data /) na swój komputer. Uruchom wireshark na swoim komputerze i otwórz plik btsnoop_hci.log
Filtr „btavdtp” (bez cudzysłowów) Wyszukaj wiadomość z telefonu do odbiornika „Wysłane polecenie - SetConfiguration ....” Jest to wiadomość wysłana przez telefon do odbiornika z ostateczną konfiguracją, która zostanie użyta dla tego dźwięku po zakończeniu uzgadniania. Tekst w polu Informacje powie ci, jaka była ostateczna konfiguracja.
[SBC] Jeśli to jest SBC, możesz chcieć wiedzieć, co to jest pula bitów. Aby to zrobić, usuń Filtr dla btavdtp i poszukaj komunikatu w protokole SBC i kliknij go. Poniżej, w sekcji szczegółów, rozwiń informacje o kodeku Bluetooth SBC. Następnie rozwiń dowolne (lub wszystkie) dane ramki. Tam powinien wyraźnie pokazać Bitpool używany przez tę ramkę. Jeśli jest to 35, istnieje duża szansa, że częstotliwość próbkowania wynosi 44,1 kHz, używasz Joint Stereo i używasz profilu audio SBC o średniej jakości ( http://soundexpert.org/news/-/blogs/bluetooth-audio -quality-a2dp ). Szybkość transmisji skompresowanego dźwięku wynosi wtedy 229 kb / s SBC, co daje 4,68 w testach Sound Expert ( http://soundexpert.org/encoders-224-kbps ), co jest porównywalne z mp3 około 110-130 kb / s.
[APT-X] Jeśli jest to APT-X, zarówno telefon, jak i odbiornik obsługują APT-X i właśnie z tego korzysta. Zakładając, że 16-bit, 44,1 kHz, kodek działa z prędkością 352 kb / s.
źródło