在android 4.0及以上版本上,来自视频url的Thumb返回空值

在android 4.0及以上版本上,来自视频url的Thumb返回空值,android,thumbnails,Android,Thumbnails,在我的应用程序中,我必须显示视频列表,我已经从视频创建了图像(拇指),并在列表中显示该图像 我添加了用于创建thumb的代码- Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.FULL_SCREEN_KIND); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bit

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

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

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级别上运行应用程序时,thumb是生成的,但当我在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

提前感谢。

创建视频缩略图(字符串文件路径,int-kind)
仅支持
MINI\u-kind或MICRO\u-kind

试试那些。。。 问候


注意:
如果视频已损坏或格式不受支持,则可能返回null。

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

以下是我解决此问题的方法-

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

希望这能解决您的问题。

如果位于外部存储器上的视频需要清单中的权限

您可以使用以下功能从视频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;
}
公共位图从视频检索视频帧(字符串视频路径){
位图=空;
MediaMetadataRetriever MediaMetadataRetriever=null;
试一试{
mediaMetadataRetriever=新的mediaMetadataRetriever();
如果(Build.VERSION.SDK_INT>=14)
//没有包括标题
setDataSource(videoPath,newhashmap());
其他的
mediaMetadataRetriever.setDataSource(videoPath);
位图=mediaMetadataRetriever.getFrameAtTime();
}捕获(例外e){
e、 printStackTrace();
}最后{
if(mediaMetadataRetriever!=null)
mediaMetadataRetriever.release();
}
返回位图;
}

使用MediaStore.Video.Thumbnails.MINI\u-KIND参数而不是全屏\u-KIND。MINI_KIND在4.0+以上与我合作,有时如果视频质量不好,它会返回空位图。因此,请检查它,如果我也尝试使用高清视频,但同样的问题。即使我也会遇到同样的问题@rb16您能告诉我您是如何解决这个问题的吗。@rb16甚至我也遇到了同样的问题。您能告诉我您是如何解决这个问题的吗?谢谢,先生。我尝试了MINI_KIND和MICRO_KIND,但在这两种情况下都返回空值。我缺少什么吗?先生,当我点击列表项时,视频播放正常。所以我不认为视频被破坏或设备不支持。同一视频在其他设备上正常播放,并创建thumb。我多次尝试卸载应用程序并清理项目。@malimo我也面临同样的问题。你有解决这个问题的办法吗?你有什么消息来源可以证实这一点吗?用户权限不取决于SD卡或内部内存。该视频不在设备上,我只是传递视频文件和存储在远程服务器上的文件的路径。同样,得到的问题是我的代码