1

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

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

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。

提前致谢。

4

5 回答 5

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.

于 2013-09-27T10:53:44.670 回答
1

您可以使用以下函数从视频 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;
}
于 2017-02-08T09:18:14.577 回答
0

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

于 2013-11-06T18:45:50.007 回答
0

如果您位于外部存储上的视频需要清单中的权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

于 2015-03-13T07:16:57.530 回答
0

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

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

希望这能解决您的问题。

于 2014-11-27T07:58:45.933 回答