【问题标题】:RuntimeException: setDataSource failed: status = 0x80000000 using MediaMetaDataRetreiverRuntimeException:setDataSource 失败:状态 = 0x80000000 使用 MediaMetaDataRetreiver
【发布时间】:2018-10-26 06:11:12
【问题描述】:

我正在尝试在 android 上制作一个 gif 应用程序。 gif 被制作并保存在 ExternalStoragePublicDirectory 中。现在我正在尝试通过将文件传递给适配器来获取这些文件并使用 MediaMetadataReteiver 在 recyclerview 中显示它。下面是 onBindViewHolder() 中的代码。

Log.d("GifAdapter: ", files[position].getAbsolutePath());
try {
retriever.setDataSource(files[position].getAbsolutePath());
holder.mImageView.setImageBitmap(retriever.getFrameAtTime(1000000, OPTION_CLOSEST_SYNC));
} catch (Exception e) {
e.printStackTrace();
}

它给了我 RuntimeException: setDataSource failed: status = 0x80000000。 我尝试使用包含视频文件的不同目录。它起作用了,我得到了要显示的框架。但是当我将它与 gif 一起使用时,它会给我运行时异常。我应该怎么做才能显示 gif。谢谢!

【问题讨论】:

  • 为什么不用像glide之类的图片库呢?检查此链接,可能会有所帮助stackoverflow.com/a/48971859/4978133
  • @ClintPaul 感谢您的回复,我使用了它,也显示了 gif,但现在我出现内存不足异常,尽管应用程序没有崩溃。如果我只显示缩略图就好了。
  • 'GlideApp .with(context) .asBitmap() .load(gifUrl) .into(imageViewGifAsBitmap);'试试这个,它只会显示 GIF 的第一帧。
  • 感谢@Clint Paul。

标签: android gif runtimeexception mediametadataretriever


【解决方案1】:

使用 Glide 显示 Gif。它将为您处理 GIF 和图像

https://github.com/bumptech/glide

【讨论】:

  • 嘿,谢谢您的回复,我使用了它,并且也显示了 gif,但是现在我出现内存不足异常,尽管应用程序没有崩溃。如果我只显示缩略图就好了。
  • 您无法显示完整尺寸的图像或 GIF。因此,如果缩略图图像视图大小为 100x100,并且您在其中加载 1000x1000 图像,则内存使用率会很高。您需要减小图像大小以降低内存使用率
  • 这两个答案都对我有帮助,实际上感谢苏乔和克林特保罗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 2013-04-30
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多