मैं यह कैसे निर्धारित करूं कि मेरा फोन कौन सा A2DP कोडेक्स सपोर्ट करता है / वर्तमान में उपयोग कर रहा है?


24

ब्लूटूथ का ऑडियो प्रोफाइल A2DP कई कोडेक्स को सपोर्ट करता है। सभी उपकरणों को एसबीसी (सबबैंड कोडेक) का समर्थन करना है, फिर वे एमपी 3 और एएसी जैसे अतिरिक्त "वैकल्पिक कोडेक्स" या उपयुक्त-एक्स की तरह "गैर-ए 2 डीपी" कोडेक्स का समर्थन कर सकते हैं।

बेशक इन कोडेक्स का वास्तव में उपयोग नहीं किया जा सकता है यदि रिसीवर भी उनका समर्थन नहीं करता है, तो उस स्थिति में दोनों डिवाइस एसबीसी में वापस आते हैं।

  1. मुझे कैसे पता चलेगा कि कौन सा कोडेक्स मेरे हार्डवेयर / रोम समर्थन का है?
  2. मुझे कैसे पता चलेगा कि वर्तमान में कौन सा कोडेक उपयोग में है? (शायद यह ट्रैक पर निर्भर करता है, भी, अगर यह एमपी 3 / एएसी फ़ाइलों को सीधे पुन: एन्कोडिंग के बिना, उदाहरण के लिए, पास करता है)

यह लेख कहता है "एंड्रॉइड उपयोगकर्ता भाग्य में हैं, क्योंकि आधुनिक एंड्रॉइड फोन AptX का समर्थन करते हैं। विंडोज के विपरीत, यह जांचना संभव है कि क्या कनेक्शन AptX का उपयोग कर रहा है!" लेकिन कैसे।
एंडोलिथ

जवाबों:


10

मेरे Cyanogen 10.1 फ़ोन (AOSP 4.2.2) पर, ब्लूटूथ ट्रैफ़िक को कैप्चर करना संभव है। फिर आप इस कैप्चर को विंडसर्क में लोड कर सकते हैं और यह निर्धारित करने के लिए बातचीत के चरण को देख सकते हैं कि कौन सा जोड़ा ऑडियो आउटपुट डिवाइस सपोर्ट करता है। यह निश्चित नहीं है कि OSes इसका क्या समर्थन करता है: जब मैं पहली बार इस विधि से भागा था तो उसने केवल 4.4 से आगे की ओर से समर्थन का दावा किया था, लेकिन स्पष्ट रूप से सीएम के साथ ऐसा नहीं हुआ। :-)

यह मानते हुए कि आपके पास अपेक्षित सेटअप है (~ 4.2.2 या बाद का रूट), ये चरण हैं:

  1. अपने फोन को ब्याज की A2DP डिवाइस के साथ जोड़े
  2. अपने फ़ोन पर ब्लूटूथ अक्षम करें
  3. इस फ़ाइल को संपादित करें: /etc/bluaxy/bt_stack.conf, BtSnoopLogOutput सेटिंग को अपने डिफ़ॉल्ट मान से असत्य पर सत्य में बदलना। इसके लिए मैं "नोट ब्राउज़र" सेटिंग को सक्षम करने के बाद ES फ़ाइल एक्सप्लोरर से लॉन्च किए गए ES नोट संपादक का उपयोग करता हूं।
  4. सभी लॉगिंग प्रकार सक्षम होने के साथ, कैटलॉग शुरू करें
  5. अपने फ़ोन पर ब्लूटूथ सक्षम करें
  6. आउटपुट डिवाइस के साथ जोड़े के बाद, अपनी पसंद के खिलाड़ी के साथ ऑडियो का एक स्निपेट बजाएं (मैं अपोलो का उपयोग करता हूं)। दस सेकंड या तो बहुत होना चाहिए।
  7. फिर से ब्लूटूथ अक्षम करें
  8. कैटलॉग की लॉगिंग को रोकें और इसकी लॉग फाइल को अपने एसडी कार्ड में सेव करें
  9. [महत्वपूर्ण!] Bt_stack.conf को संपादित करें, BtSnoopLogOutput को वापस गलत में बदल रहा है।
  10. अपने एसडी कार्ड (/sdcard/btsnoop_hci.log) से बीटी कैप्चर की प्रतिलिपि, सहेजे गए कैटलॉग फ़ाइल के साथ, वर्तमान में स्थापित Wireshark की प्रतिलिपि कंप्यूटर के साथ।
  11. Wireshark में कैप्चर फ़ाइल लोड करें और "btavdtp" (कोई उद्धरण नहीं) का Wireshark प्रदर्शन फ़िल्टर सेट करें। अब आप केवल कुछ पैकेट देखेंगे, एवीडीटीपी गेटकैपिबिलिटी क्वेरी के आउटपुट डिवाइस के उत्तर की तलाश करें और आपके पास आपका उत्तर होगा।

विचारोत्तेजक लॉग प्रविष्टियों की तलाश के लिए आप कैटलॉग लॉग के टाइमस्टैम्प के साथ कैप्चर टाइमस्टैम्प्स को भी पंक्तिबद्ध कर सकते हैं। मैंने एक जोड़े को पाया और बड़ी चतुराई से उन्हें उन नोटों में शामिल करना भूल गया, जिन पर यह पोस्ट आधारित है।

एक बार जब मेरे पास कुछ और समय होता है, तो मैं किसी ऐप पर नीचे कदम रखने के इस लंबे सेट को कम करने की उम्मीद कर रहा हूं, लेकिन यह सुनिश्चित नहीं है कि यह संभव है और आपके पास अभी भी कुछ समय के लिए समय नहीं होगा। इस बीच, उपरोक्त प्रक्रिया में सुधार के सुझावों का स्वागत है।


1
धन्यवाद। यह बहुत अच्छा काम किया। मुझे कैटलॉग लॉग में क्षमताओं के लिए प्रासंगिक कुछ भी नहीं मिला। वैसे भी, Moto G (2013) पर CM 4.4.2 और LG HBS-730 हेडसेट के साथ इसे चलाने की कोशिश की गई थी। लॉग में कोई एप्ट-एक्स नहीं है, क्योंकि सीएम के पास इसके लिए मालिकाना काम नहीं है।
17

धन्यवाद, @Martynas, पता करने के लिए अच्छा है। क्या इसमें एमपी का समर्थन शामिल था? मैं सोच रहा हूं कि मेरे फ़ोन एमपी को सपोर्ट करने वाले परीक्षण के लिए एक अच्छा लक्ष्य क्या हो सकता है। कार रेडियो दुर्भाग्य से नहीं है, और मुझे कोई भी (!) उत्पाद नहीं मिला है जो इसके ए 2 डीपी कोडेक समर्थन का दस्तावेज है। कैटलॉग के बारे में, यह नहीं सोच रहा था कि वास्तविक कोडक सूची में कुछ विचारोत्तेजक संदेश होंगे, जिनका उपयोग स्रोत कोड को खोजने के लिए किया जा सकता है। एक और दिन ..
ईवेडेल

1
तो Discoverतीन ऑडियो सिंक वापस करने के लिए एक प्रतिक्रिया । करने के लिए एक प्रतिक्रिया GetCapabilitiesके लिए ACP SEID [2 - Audio Sink]शामिल किए गए Service: Media Codec - Audio MPEG-1,2 Audioजो था MP3: True। मैंने कब्जा कर लिया लॉग फ़ाइल को github पर अपलोड किया है ।
डीवीएम

धन्यवाद फिर से @Martynas 730 की बेहतर समीक्षा होने के बावजूद, परीक्षण के लिए LG HBS-750 को पकड़ा। 730 के रूप में कोडेक्स के एक ही सूट। आपके रेपो को फोर्क किया है और यहां एक और कैप्चर जोड़ा है । दुर्भाग्य से, हमारे दोनों कैप्चर में फोन एमपी के बजाय एसबीसी का उपयोग करना चुन रहा है। सुनिश्चित नहीं हैं कि आपने किस मीडिया फ़ाइल का उपयोग किया है, लेकिन मेरे CM 4.2.2 परीक्षण में 128kb / s VBR एमपी 3 का उपयोग किया गया है (बीटी बैंडविड्थ पर जोर देने से बचने के लिए जानबूझकर छोटी बिटरेट)। लगता है कि Ce4 लाइसेंस की समस्या के बारे में सही हो सकता है ।
इवेडेल

`/ Etc / bluetooth / bt_stack.conf` की ईडिटिंग काम नहीं कर रही थी, लेकिन मेरे पास डेवलपर सेटिंग में समान सेटिंग थी और यह काम किया। आपके उत्तर के लिए धन्यवाद, मुझे पता चला कि तोता ज़िक 2 ज्यादातर समय एसबीसी का उपयोग करता है।
शून्य

8

स्रोत को देखते हुए, कम से कम 4 कोडेक्स हैं: एसबीसी (अनिवार्य), एमपी 3 (एमपीईजी 12), एएसी (एमपीईजी 24) और सोनी के एटीआरएसी।

./android/external/bluetooth/bluez/audio/a2dp.h:  
#define A2DP_CODEC_SBC          0x00
#define A2DP_CODEC_MPEG12       0x01
#define A2DP_CODEC_MPEG24       0x02
#define A2DP_CODEC_ATRAC        0x03

अंतर्निहित सॉफ़्टवेयर linux '' bluez '' स्टैक है। यह SBC को सपोर्ट करता है और इसमें MP3 की क्षमता सीमित है।

V3.25 (2009?) के लिए चैंज पढ़ें: "MPEG12 / MP3 कोडेक के लिए सीमित समर्थन जोड़ें"।

./android/external/bluetooth/bluez/ChangeLog:
ver 3.25:
    Add limited support for Handsfree profile.
    Add limited support for MPEG12/MP3 codec.

V3.25 घोषणा भी देखें । एमपी 3 सपोर्ट, जैस्मेर पर निर्भर करने के लिए लगता है जो एंड्रॉइड पर उपलब्ध नहीं है, इसलिए मुझे लगता है कि SBC बूट करने के लिए A2DP का एकमात्र विकल्प है।

पुनश्च: अधिकांश A2DP डिवाइस पेटेंट / लाइसेंसिंग मुद्दों (लिनक्स सहित) के कारण MP3 / AAC के लिए समर्थन की कमी लगती हैं।


2
वे 3 वैकल्पिक कोडेक्स हैं, हां, या यह एपेक्स-एक्स का उपयोग करके गैलेक्सी एस III जैसे अन्य कोडेक्स का उपयोग कर सकते हैं । मैंने सोचा कि एन्कोडिंग हार्डवेयर द्वारा प्रदान की गई थी, हालांकि? एंड्रॉइड एमपी 3 खेल सकता है इसलिए मुझे संदेह है कि कोई पेटेंट सीमाएं हैं।
एंडोलिथ

2
मुझे नहीं लगता कि SBC के पास Android उपकरणों में एक समर्पित हार्डवेयर एनकोडर है। यह कम्प्यूटेशनल रूप से मामूली है इसलिए मुझे लगता है कि यह सॉफ्टवेयर में किया गया है। कम से कम स्रोतों से संकेत मिलता है कि। PS: मैं CyanogenMod के स्रोत को देख रहा हूं, न कि HTC या Samsung के। PS2: मेरा मतलब था कि एमपी 3 / एएसी (हेडसेट्स आदि) की कमी के साथ दूसरी तरफ ऑडियो सिंक डिवाइस
22

7

Nexus 4 (5.0.1) या Nexus 7 (2012) (4.4.4) डिवाइस के साथ btsnoop_hci.log प्राप्त करने के लिए डेवलपर मोड का उपयोग करना संभव है। "ब्लूटूथ HCI स्नूप लॉग सक्षम करें"। उपकरणों को रूट करने के लिए आवश्यक नहीं है। ऐसा लगता है कि दोनों डिवाइस aptx की पेशकश नहीं करते हैं। मैं मोटो स्ट्रीम (aptx) और फिलिप्स AEA2500 (aptx के साथ) के साथ इसका परीक्षण करता हूं।


1
मैं सीएम 12.1 पर हूं और यह पोशन मेरे लिए भी उपलब्ध है। शायद यह सभी हालिया फोन पर है। धन्यवाद।
पेड्रो_सलैंड

4

[इस उत्तर का श्रेय ज्यादातर ईवेडेल को जाता है, जिन्होंने स्पष्ट किया कि उत्तर बर्टनोप_हाइसी.लॉग फ़ाइल में है, जो कि विंडशार्क का उपयोग कर रहा है; और prittstift69, इस लॉग फ़ाइल को बनाने का आसान तरीका साझा करने के लिए।]

यह एक नौसिखिया-अनुकूल, चरण-दर-चरण ट्यूटोरियल है, जो पहले से ही दिए गए उत्तरों को संक्षेप में प्रस्तुत कर रहा है, मेरे साथ परिणामों की कुछ व्याख्या के साथ।

जैसा कि prittstift69 और अन्य ने उल्लेख किया है, आप डेवलपर विकल्पों के तहत "ब्लूटूथ एचसीआई स्नूप लॉग को सक्षम करें" कर सकते हैं। Ewedel द्वारा सुझाए गए अधिक जटिल दृष्टिकोण का पालन करने की आवश्यकता नहीं है।

  1. एंड्रॉइड डिवाइस पर ब्लूटूथ ऑफ चालू करके शुरू करें (मैं इसे 'फोन' कहूंगा)।

  2. डेवलपर विकल्पों के तहत ब्लूटूथ HCI स्नूप लॉग ऑन करें।

  3. फोन पर ब्लूटूथ चालू करें और इसे ब्लूटूथ रिसीवर से कनेक्ट करें (मैं इसे 'रिसीवर' कहूंगा)। यह कदम मानता है कि रिसीवर को पहले फोन के साथ जोड़ा गया था।

  4. अपने फोन पर संगीत चलाएं (आदर्श रूप से एक असम्पीडित WAV या FLAC फ़ाइल)। दस सेकंड आप सभी की जरूरत है। (शायद इससे भी कम)

  5. फोन पर ब्लूटूथ बंद करें।

  6. ब्लूटूथ HCI स्नूप लॉग को बंद करें

  7. फ़ाइल btsnoop_hci.log (मुझे यह आपके कंप्यूटर में / sdcard / Android / Data /) में मिला। अपने कंप्यूटर पर वायरशर्क चलाएं और फ़ाइल btsnoop_hci.log खोलें

  8. "Btavdtp" (कोई उद्धरण नहीं) के लिए फ़िल्टर करें फोन से रिसीवर को भेजे गए संदेश के लिए खोज करें "प्रेषित आदेश - SetConfiguration ...." यह इस संदेश के लिए फोन द्वारा रिसीवर को भेजा गया संदेश है जिसे इस ऑडियो के लिए उपयोग किया जा सकता है। हैंडशेकिंग पूरी होने के बाद। जानकारी फ़ील्ड का पाठ आपको बताएगा कि अंतिम कॉन्फ़िगरेशन क्या था।

[एसबीसी] अगर यह एसबीसी है, तो आप जानना चाह सकते हैं कि बिटपूल क्या है। ऐसा करने के लिए, btavdtp के लिए फ़िल्टर निकालें और प्रोटोकॉल SBC के साथ एक संदेश देखें और उस पर क्लिक करें। नीचे, विवरण अनुभाग में, ब्लूटूथ एसबीसी कोडेक जानकारी का विस्तार करें। फिर फ़्रेम डेटा के किसी भी (या सभी) का विस्तार करें। वहां, उस फ़्रेम द्वारा उपयोग किए गए बिटपूल को स्पष्ट रूप से दिखाना चाहिए। यदि यह 35 है, तो एक अच्छा मौका है कि आपकी नमूना दर 44.1 kHz है, आप संयुक्त स्टीरियो का उपयोग कर रहे हैं, और मध्य गुणवत्ता SBC ऑडियो प्रोफ़ाइल ( http://soundexpert.org/news/-/blogs/blu ब्लूटूथ-audio) का उपयोग कर रहे हैं -क्वालिटी- a2dp )। संपीड़ित ऑडियो के लिए बिटरेट तब 229 kbit / sec SBC है, जो ध्वनि विशेषज्ञ के परीक्षण में एक 4.68 स्कोर करता है ( http://soundexpert.org/encoders-224-kbps ) जो कि लगभग 110-130 / सेकंड के एमपी 3 के बराबर है।

[APT-X] यदि यह APT-X है, तो आपका फ़ोन और रिसीवर दोनों APT-X का समर्थन करते हैं, और यही इसका उपयोग कर रहा है। 16-बिट, 44.1kHz मानकर, कोडेक 352kbits / s पर चल रहा है।


"आदर्श रूप से एक असम्पीडित WAV या FLAC फ़ाइल" क्या आप यह देखने के लिए MP3 नहीं चलाना चाहेंगे कि क्या यह MP3, आदि के रूप में भेजता है?
एंडोलिथ

2
केवल अगर आपका लक्ष्य यह देखना है कि क्या A2DP दोनों पक्षों (एक वैध प्रश्न) पर एमपी 3 का समर्थन करता है। हालाँकि, मेरा अनुभव यह है कि दोनों तरफ एमपी का समर्थन दुर्लभ है (मैंने इसे अपने किसी भी डिवाइस पर कभी नहीं देखा है, और मुझे काफी कुछ मिला है)। तो, कम से कम Android उपकरणों के साथ, आपके सबसे अधिक संभावना A2DP कोडेक विकल्प SBC और APTX हैं। एक असम्पीडित ऑडियो फ़ाइल बजाना फोन को फिर से एनकोड करने के लिए मजबूर करता है।
klaberte

मैंने एक उत्तर नहीं लिखा
एंडोलिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.