【问题标题】:Thumb from video url returns null on android 4.0 and above来自视频 url 的拇指在 android 4.0 及更高版本上返回 null
【发布时间】:2013-10-03 15:16:55
【问题描述】:

在我的应用程序中,我必须显示视频列表,我已从视频创建图像(拇指)并在列表中显示该图像。

我添加了用于创建拇指的代码-

Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);

我的问题是,当我在低于 4.0 的 android api 级别上运行应用程序时,会生成拇指,但是当我在 android 4.0 及更高版本上运行相同的应用程序时,ThumbnailUtils.createVideoThumbnail() 方法返回 null。 请帮我解决这个问题。

从昨天开始工作但仍然没有得到解决方案。我已经尝试过 -

Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MINI_KIND);
and
Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MICRO_KIND);

但仍然返回 null。

提前致谢。

【问题讨论】:

  • 使用 MediaStore.Video.Thumbnails.MINI_KIND 参数而不是 FULL_SCREEN_KIND。 MINI_KIND 在 4.0+ 以上和我一起工作
  • 有时,如果视频质量不好,它会返回空位图。所以也要检查一下
  • 先生,我也尝试过使用高清视频,但同样的问题。
  • 即使我遇到了同样的问题。 @rb16 你能告诉我你是怎么解决这个问题的吗?
  • @rb16 即使我遇到了同样的问题。你能告诉我你是如何解决这个问题的

标签: android thumbnails


【解决方案1】:

createVideoThumbnail(String filePath, int kind) 仅支持 MINI_KIND or MICRO_KIND 作为种类。

http://developer.android.com/reference/android/media/ThumbnailUtils.html

尝试其中一个... 问候

注意:May return null if the video is corrupt or the format is not supported.

【讨论】:

  • 感谢先生的回复。我尝试了 MINI_KIND 和 MICRO_KIND,但在这两种情况下它都返回 null。我错过了什么吗?
  • 先生,当我点击列表项时,视频可以正常播放。所以我不认为视频已损坏或设备不支持。
  • 同一视频在其他设备上正常播放并创建拇指。我通过卸载应用程序和清理项目尝试了很多次。
  • @malimo 我也面临同样的问题。你有什么想法可以解决这个问题。
【解决方案2】:

您可以使用以下函数从视频 URL 中获取位图。

public Bitmap retriveVideoFrameFromVideo(String videoPath){
    Bitmap bitmap = null;

    MediaMetadataRetriever mediaMetadataRetriever = null;
    try {
        mediaMetadataRetriever = new MediaMetadataRetriever();
        if (Build.VERSION.SDK_INT >= 14)
            // no headers included
            mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
        else
            mediaMetadataRetriever.setDataSource(videoPath);
        bitmap = mediaMetadataRetriever.getFrameAtTime();
    } catch (Exception e) {
        e.printStackTrace();

    } finally {
        if (mediaMetadataRetriever != null)
            mediaMetadataRetriever.release();
    }
    return bitmap;
}

【讨论】:

    【解决方案3】:

    某些设备无法播放,也无法为视频创建缩略图,这些视频放置在内存中。 检查它,然后在创建缩略图之前将您的视频移动到 SD 卡。

    【讨论】:

    • 您是否有某种来源可以证实这一点?用户权限不依赖于 sdcard 或内存。
    • 该视频不在设备上,我只是传递视频文件的路径和存储在远程服务器上的文件。
    【解决方案4】:

    这是我解决此问题的解决方案-

    Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath,
                    MediaStore.Images.Thumbnails.MINI_KIND);
    

    希望这能解决您的问题。

    【讨论】:

    【解决方案5】:

    如果您位于外部存储设备上的视频需要清单中的权限 &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt;

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2015-01-25
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多