我使用MediaMetadataRetriever从Android设备上的M4A文件检索元数据。这是我执行的代码。
final MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(new File(root, audioFile).getAbsolutePath());
String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
String album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
mmr.release();
问题是,当我为MP3文件调用此代码时,它非常快。例如,25个MP3文件在不到900毫秒的时间内被分析。
但是如果我为一个m4a文件调用它,那么相同的代码需要6秒来执行。这是非常缓慢的。
另一个观察是,当我使用android mediaplayer时,任何mp3文件都会立即开始播放,而在启动m4a文件和第一个声音之间有相同的6秒延迟。
我试过不同的安卓版本和不同的设备。同样的问题。
有什么办法可以摆脱这种耽搁吗?
最佳答案
你试过吗?
final FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(new File(root, audioFile).getAbsolutePath());
String title = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_TITLE);
String album = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM);
String artist = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST);
mmr.release();