【发布时间】:2017-06-11 16:33:38
【问题描述】:
Android fresco 图片加载库提供了多种组件来自定义来自多个来源的图片加载。在我的情况下,我想检索音频/mp3 文件的嵌入式封面(不是可以使用 uri 访问的专辑封面)。这可以使用Android MediaMetadataRetriever 或一些自定义库(如FFmpegMediaMetadataRetriever)来实现。
问题是,API 总是需要一个PATH 并返回一个字节数组。这使得它很难集成到基于流的 fresco 管道中。
理想情况下,我想实现这个类似于Glide allows it。也就是一些非常低级的函数,它获取字节并将它们简单地包装在一个流中。 Afaik,我们可以使用自定义 Decoders,但不能使用 Producers。数据已经在解码器阶段加载。我不知道这应该发生在哪一层以及是否可能。
滑动代码供参考:
@Override public InputStream loadData(Priority priority) throws Exception {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(model.path);
byte[] picture = retriever.getEmbeddedPicture();
if (picture != null) {
return new ByteArrayInputStream(picture);
} else {
return fallback(model.path);
}
} finally {
retriever.release();
}
}
结果将被加载到 SimpleDraweeView 中。或者,我愿意接受任何允许我使用 fresco 将嵌入式封面艺术异步加载到 SimpleDraweeView 中的解决方案。
【问题讨论】:
标签: java android image pipeline fresco