2014-01-10 3 views
1

Android 용 자체 뮤직 플레이어를 만들려고합니다.MediaMetadataRetriever로 MetaData를 추출하면 예기치 않은 결과가 발생합니다.

목록의 경우 노래의 메타 데이터가 필요하므로 MediaMetadataRetriever을 사용하여 추출하지만 검색자는 대부분의 노래 (~ 630 of 669)를 추출 할 수 없습니다. 내 PC 음악 소프트웨어에서는 메타 데이터가 표시되며 Windows 탐색기에서도 볼 수 있습니다. 노래의 속성을 열면 파일을 수정할 수 있습니다. 변경된 파일을 휴대 전화에로드하면 여전히 작동하지 않습니다. 그건 그렇고 : 만약 내가 전화로 다른 플레이어를 사용하면, 그것은 항상 메타 데이터를로드 할 수 있습니다.

MediaMetadataRetriever은 버그가 있으며 추출을 위해 다른 라이브러리를 사용해야합니까, 아니면 잘못된 것을하고 있습니까?

This 질문과 관련되어 있지만 내 문제를 해결하는 데 도움이되지 않습니다.

MediaMetadataRetriever lMetaData = new MediaMetadataRetriever(); 
lMetaData.setDataSource(mAbsolutePath); 
mArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 
mTitle = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 
mAlbum = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
mAlbumArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST); 
mGenre = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE); 
mSongNumber = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER); 
mYear = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR); 

if(mArtist == null) 
    mArtist = new String(""); 
if(mTitle == null) 
    mTitle = new String(""); 
if(mAlbum == null) 
    mAlbum = new String(""); 
if(mAlbumArtist == null) 
    mAlbumArtist = new String(""); 
if(mGenre == null) 
    mGenre = new String(""); 
if(mSongNumber == null) 
    mSongNumber = new String(""); 
if(mYear == null) 
    mYear = new String(""); 
+0

태그에 다른 외부 라이브러리를 사용하기 때문에 문제가 해결됩니다. – Schamote

답변

1

MediaMetadataRetriever는 형식의 소수를 지원합니다

여기 예로 내 코드의 일부이다. 나는 FFmpegMediaMetadataRetriever을 추천한다. 여러 가지 추가 형식과 프로토콜을 지원합니다.

+1

감사합니다. 나를 위해 일한다. – david72

관련 문제