2011-06-10 4 views
11

SD 카드에 로컬로 저장된 mp3 파일에서 ID3을 읽으려고합니다.ID3 읽기 MP3 파일의 태그

나는 기본적으로 인출 할

  1. 제목
  2. 아티스트
  3. 앨범
  4. 트랙 길이
  5. 앨범 아트 사용이 모든 것을 얻을 수

답변

29

MediaMetadataRetriever

MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
mmr.setDataSource(filePath); 

String albumName = 
    mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
+0

감사합니다. 어떤 예도 나에게 지적 할 수 있습니다. –

+0

MediaMetadataRetriever를 가져올 수 없습니다. Eclipse는 옵션을 제공하지 않습니다. 어떤 생각? –

+0

API 레벨 10 또는 진저 브레드에서 사용할 수 있습니다. – Reno

4

체크 the MP3 file format. 기본적으로 파일의 마지막 128 바이트를 읽어야합니다. 첫 번째 3 바이트가 "TAG" 인 경우 필요한 필드를 읽고 계속 읽으십시오. 그렇지 않은 경우 파일에 첨부 된 정보가 없습니다.

+0

안드로이드에서 구현하는 방법을 알고 싶습니다. 어떤 생각? –

+1

파일과 128 바이트 버퍼로부터'InputStream'을 생성합니다; 마지막 128 바이트를 버퍼로 읽어 들인다. 버퍼의 처음 3 바이트를 확인하고, 'TAG'이어야한다. 'Arrays.copyOfRange'를 사용하여 관련 바이트들을 읽으십시오; 그 바이트를'int' (장르) 또는'String' (다른 모든 것)으로 변환합니다. –

+0

정말 간단하지가 않습니다. 더 많은 태그 버전이 있습니다.이 버전은 이전 버전 만 읽기 쉽습니다. –

3

마지막 128 바이트가 토큰 "TAG"로 시작하면 파일에 ID3v1 (또는 ID3v1.1) 태그가 있습니다. ID3v2.3 태그는 토큰 "id3"으로 표시된 파일의 시작 부분 (스트리밍에 적합)에 있습니다. 나는 ID3v2.4가 "3DE"로 표시된다고 생각하지만, 확실하지 않습니다. ...

+0

이것은 내가 필요한 정보와 정확히 일치했다. 고마워! Bandcamp MP3가 ID3v2.3 태그가 붙어 있기 때문에 나는 Elixir와 일치하는 Bandcamp MP3를 패턴 화하려고 시도하고 있었고 항상 오류가 발생했습니다. 내가 할 수 있다면 100 배 upvote겠습니까. – odiumediae