来自视频网址的拇指在Android 4.0及更高版本上返回null

时间:2013-09-27 10:44:07

标签: android thumbnails

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

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

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

我的问题是,当我在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。

提前致谢。

5 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

有些设备无法播放,无法为内置内存的视频创建缩略图。 检查一下,然后在创建缩略图之前将视频移动到SD卡。

答案 2 :(得分:0)

以下是解决此问题的解决方案 -

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

希望这能解决您的问题。

答案 3 :(得分:0)

如果位于外部存储设备上的视频需要在清单中获得许可 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

答案 4 :(得分:0)

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

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;
}