O Perfil de áudio A2DP do Bluetooth suporta vários codecs. Todos os dispositivos precisam oferecer suporte a SBC (codec de sub-banda), para que possam suportar "codecs opcionais" adicionais, como MP3 e AAC, ou codecs "não-A2DP", como o apt-X.
É claro que esses codecs não podem realmente ser usados se o receptor também não os suportar; nesse caso, os dois dispositivos retornam à SBC.
- Como descubro quais codecs meu hardware / ROM suporta?
- Como descubro qual codec está atualmente em uso? (Talvez isso dependa também da faixa, se ela passar arquivos MP3 / AAC diretamente sem recodificar, por exemplo)
bluetooth
audio
a2dp
bluetooth-audio
endólito
fonte
fonte
Respostas:
No meu telefone Cyanogen 10.1 (AOSP 4.2.2), é possível ativar a captura de tráfego bluetooth. Você pode carregar essa captura no Wireshark e examinar a fase de negociação para determinar quais codecs o dispositivo de saída de áudio emparelhado suporta. Não tenho certeza de quais sistemas operacionais suportam isso: quando eu deparei com esse método, ele alegava suporte apenas a partir do 4.4, mas claramente não era o caso do CM em um Doubleshot. :-)
Supondo que você tenha a configuração necessária (raiz ~ 4.2.2 ou posterior), estas são as etapas:
Você também pode alinhar os registros de data e hora da captura com os registros de data e hora do log do CatLog para procurar entradas de registro sugestivas. Encontrei um casal e esqueci inteligentemente de incluí-lo nas notas em que este post se baseia.
Quando tiver mais tempo, espero reduzir esse longo conjunto de etapas para um aplicativo, mas não tenho certeza se é possível e ainda não terá tempo por um tempo. Enquanto isso, sugestões para melhorar o processo acima são bem-vindas.
fonte
Discover
retornou três coletores de áudio. Uma respostaGetCapabilities
paraACP SEID [2 - Audio Sink]
incluídoService: Media Codec - Audio MPEG-1,2 Audio
que tinhaMP3: True
. Fiz upload do arquivo de log capturado no github .Observando a fonte, há pelo menos 4 codecs: SBC (obrigatório), MP3 (MPEG12), AAC (MPEG24) e ATRAC da Sony.
O software subjacente é a pilha "bluez" do linux. Ele suporta SBC e possui recursos limitados de MP3.
O changelog da v3.25 (2009?) Diz: "Adicione suporte limitado ao codec MPEG12 / MP3".
Veja também o anúncio da v3.25 . O suporte a MP3 parece depender do gstreamer, que não está disponível no Android, então acho que o SBC é a única opção para o A2DP inicializar.
PS: A maioria dos dispositivos A2DP parece não ter suporte para MP3 / AAC devido a problemas de patentes / licenciamento (incluindo Linux).
fonte
Com os dispositivos Nexus 4 (5.0.1) ou Nexus 7 (2012) (4.4.4), é possível usar o modo de desenvolvedor para obter o btsnoop_hci.log. "Ativar log snoop Bluetooth HCI". Não é necessário fazer root nos dispositivos. Parece que ambos os dispositivos não oferecem aptx. Eu testei isso com o Moto Stream (sem aptx) e a Philips AEA2500 (com aptx).
fonte
[O crédito por essa resposta é principalmente do ewedel, que esclareceu que a resposta está no arquivo btsnoop_hci.log, usando o Wireshark; e prittstift69, por compartilhar a maneira fácil de criar esse arquivo de log.]
Este é um tutorial passo a passo para iniciantes, resumindo as respostas já fornecidas, com alguma interpretação dos meus resultados.
Como prittstift69 e outros mencionados, você pode "Ativar log snoop Bluetooth HCI" em Opções do desenvolvedor. Não é necessário seguir a abordagem mais complicada sugerida por ewedel.
Comece desativando o bluetooth no dispositivo Android (vou chamá-lo de 'telefone').
Ative o log do snoop Bluetooth HCI em Opções do desenvolvedor.
Ligue o Bluetooth no telefone e conecte-o ao receptor Bluetooth (chamarei de 'receptor'). Esta etapa pressupõe que o receptor tenha sido anteriormente emparelhado com o telefone.
Reproduza música no seu telefone (de preferência um arquivo WAV ou FLAC não compactado). Dez segundos é tudo que você precisa. (Provavelmente até menos)
Desligue o Bluetooth no telefone.
Desativar o log do snoop Bluetooth HCI
Transfira o arquivo btsnoop_hci.log (eu o encontrei em / sdcard / Android / Data /) para o seu computador. Execute o wireshark no seu computador e abra o arquivo btsnoop_hci.log
Filtrar "btavdtp" (sem aspas) Procure uma mensagem do telefone para o destinatário "Comando enviado - SetConfiguration ...." Esta é a mensagem enviada pelo telefone ao destinatário com a configuração final a ser usada para este áudio após a conclusão do aperto de mão. O texto no campo Informações informará qual era a configuração final.
[SBC] Se for SBC, convém saber qual é o bitpool. Para fazer isso, remova o filtro do btavdtp, procure uma mensagem com o protocolo SBC e clique nele. Abaixo, na seção de detalhes, expanda as informações do Bluetooth SBC Codec. Expanda qualquer um (ou todos) os dados do quadro. Lá, ele deve mostrar claramente o Bitpool usado por esse quadro. Se tiver 35 anos, há uma boa chance de que a taxa de amostragem seja 44,1 kHz, você esteja usando o Joint Stereo e o perfil de áudio SBC de qualidade média ( http://soundexpert.org/news/-/blogs/bluetooth-audio -quality-a2dp ). A taxa de bits para o áudio compactado é de 229 kbits / s SBC, que atinge 4,68 nos testes do Sound Expert ( http://soundexpert.org/encoders-224-kbps ), comparável ao mp3 em torno de 110-130 kbits / s.
[APT-X] Se for o APT-X, o telefone e o receptor suportam o APT-X, e é isso que está usando. Assumindo 16 bits, 44,1kHz, o codec está sendo executado a 352kbits / s.
fonte