Existe algo na arquitetura ou API do Android que impede as pessoas de criar mp3 players que leem letras incorporadas?

StackOverflow https://stackoverflow.com/questions/4271099

  •  28-09-2019
  •  | 
  •  

Pergunta

Quando eu jogo certos arquivos MP3 (como lições de JAPANESEPOD101.com) No meu iPod touch, letras ou transcrições incorporadas nos arquivos MP3 são exibidos no Media Player. Acredito que as letras são armazenadas como tags ID3/ID4 nos metadados MP3.

Acho que esse é um recurso extremamente útil e acredito que não estou sozinho. Apesar disso, nem o Media Player do Android nem qualquer outro media player que eu baixei do mercado parece apoiar isso. Só não consegui encontrar nenhuma maneira de obter o recurso no meu nexo.

Esse recurso é importante o suficiente para mim que estou pensando em aprender o desenvolvimento do Android apenas para que eu possa escrever um simples media player que exibe letras ou notas incorporadas. No entanto, o fato de ninguém mais ter feito isso me faz pensar - é possível? Existe algo na arquitetura Android ou APIs que tornam difícil ou impossível ler e exibir informações das letras de arquivos MP3? Eu odiaria me aprofundar no processo de aprendizado e descobrir o que estou buscando não pode ser feito facilmente. (Quero dizer, se tudo mais falhar, presumo que eu possa escrever meu próprio MP3-Decoder, mas isso é mais problemas do que estou disposto a passar agora).

Eu já fiz essa pergunta sobre o Entusiastas do andróide Stack Exchange Beta, mas, em retrospecto, decidi que era mais uma pergunta de programação e decidi que era melhor fazer aqui.

Foi útil?

Solução

Sim, definitivamente mais uma pergunta de programação. Apenas pela minha breve experiência de ler a especificação ID3, acho que provavelmente é apenas que a decodificação do ID3 Tags é uma pita completa. Tenho certeza de que isso pode ser feito, pois existem aplicativos de edição de tags de MP3 disponíveis para o Android (se alguma letra de suporte ou não, eu não sei).

O ID3V2.3 parece ter suporte para letras sincronizadas e não sincronizadas através dos quadros Sylt e USLT do cabeçalho. Eu imagino que seja um recurso tão subutilizado que não vale o esforço para fazê -lo. Os MP3s adquiridos não carregam essas informações (eu sempre me perguntei por que não?), Então eles teriam que ser adicionados manualmente (ou automaticamente por meio de uma API de serviço lyric, mas há muito mais codificação envolvida com isso).

Aqui é a especificação ID3V2.3 se você quiser analisá -lo mais ... (abandone a esperança de todos os que entram aqui)

Outras dicas

O problema pode ser que a maioria das pessoas usaria os mecanismos de reprodução de MP3 embutidos, e isso pode não suportar a exibição do letras nem muito fácil de se manter sincronizado com outra coisa fazendo exibição de letras.

Portanto, pode ser que algo precise ser escrito, que faz sua própria decodificação de MP3.

Provavelmente, isso gostaria de ser feito no código nativo. Por outro lado, no Android, a saída de áudio (e, a menos que você use o OpenGL, exibição de vídeo), praticamente precisa ser feito no Java. Então, você está procurando uma quantidade razoável de trabalho para decodificar dados com uma biblioteca nativa e, em seguida, despachar -os para reprodução e exibir do Java.

Então, para responder sua pergunta - é possível? Definitivamente

É facilitado pelas APIs do Android? - Na verdade não

Acabei de adicionar uma nova solicitação de recurso que daria suporte ao Android para a leitura do USLT na tag ID3. Isso permitirá que os jogadores de música nativa e de terceiros exibam letras. Se você deseja esse recurso, estrela a solicitação abaixo e publique seus comentários.

http://code.google.com/p/android/issues/detail?id=32547

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top