在我的应用程序中,我必须显示视频列表,我已经从视频创建了图像(拇指)并在列表中显示该图像。
我添加了用于创建拇指的代码 -
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。
提前致谢。
答案 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;
}