我使用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();

08-18 05:20