由MediaMetadataRetriever.setDataSource()引起的RuntimeException,如何解决?

时间:2019-09-24 10:13:16

标签: java android

path = "/mnt/media_rw/336C-7725/test.mp3"

mmr.setDataSource(path);

这是一条USB路径,当我尝试运行时,我具有系统uid

我收到此错误!

我确定此mp3文件没有问题。

它是随机的,有时还可以,但是现在setDataSource失败了:status = 0x80000000

我尝试了在SO上发现的几乎所有操作,但是没有用。


我的代码

public static ArrayList<MusicInfo> mediaItemListToMusicInfo(List<MediaItem> mediaItemList) {
        ArrayList<MusicInfo> musicInfoList = new ArrayList<>();
        int i = 10000;
        MediaMetadataRetriever mmr = new MediaMetadataRetriever();
        for (MediaItem mediaItem : mediaItemList) {
            //todo:空文件的异常处理
            String musicPath = mediaItem.getUrl();
            Log.d("usb mediaItemListToMusicInfo", musicPath);
            MusicInfo musicInfo = new MusicInfo();
            musicInfo.songId = i++;
            musicInfo.size = Long.valueOf(mediaItem.getLength());
            musicInfo.data = musicPath;
            musicInfo.musicName = mediaItem.getName().substring(0, mediaItem.getName().lastIndexOf("."));
            try {
                mmr.setDataSource(musicPath);
                musicInfo.musicName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE) == null ?
                        mediaItem.getName().substring(0, mediaItem.getName().lastIndexOf("."))
                        : mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
                musicInfo.artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST) == null ?
                        "未知" : mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
                musicInfo.albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM) == null ?
                        "未知" : mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);

                musicInfo.duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION) == null ?
                        0 : Integer.valueOf(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
            } catch (RuntimeException e) {
                e.printStackTrace();
                Log.e("usb mediaItemListToMusicInfo", "解析音频出错!");
            }

            Log.d("usb musicInfo", musicInfo.toString());

            musicInfoList.add(musicInfo);

        }
        mmr.release();
        return musicInfoList;
    }

我看到下面的日志: 11-13 17:56:58.162 11327 11327 D usb mediaItemListToVideo:/ mnt / media_rw / C013-AF73 /测试用视频/SampleVideo_1280x720_10mb.mkv 11-13 17:56:58.162 11327 11327 E usb mediaItemListToMusicInfo:解析视频出错! 11-13 17:56:58.163 1749 1749 E MetadataRetrieverClient:检索器未初始化 11-13 17:56:58.164 1749 1749 E MetadataRetrieverClient:检索器未初始化

0 个答案:

没有答案