下面的代码运行良好,生成图像缩略图来自给定网址的视频,但我想知道,是可以在假设100毫秒时生成视频缩略图,因为默认情况下它会在开始位置生成缩略图,因此如果在开始时视频屏幕是黑色的,那么缩略图也显示为黑色,因此它看起来很奇怪。那么有没有可能通过跳过几毫秒来获得缩略图。
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
String path;
public DownloadImage(ImageView bmImage, String path) {
this.bmImage = (ImageView ) bmImage;
this.path=path;
}
protected Bitmap doInBackground(String... urls) {
Bitmap myBitmap = null;
MediaMetadataRetriever mMRetriever = null;
try {
mMRetriever = new MediaMetadataRetriever();
if (Build.VERSION.SDK_INT >= 14)
mMRetriever.setDataSource(path, new HashMap<String, String>());
else
mMRetriever.setDataSource(path);
myBitmap = mMRetriever.getFrameAtTime();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (mMRetriever != null) {
mMRetriever.release();
}
}
return myBitmap;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
答案 0 :(得分:0)
您可以使用MediaMetadataRetriever
的其他重载方法来获取特定时间的帧。
public Bitmap getFrameAtTime(long timeUs, int option) {
throw new RuntimeException("Stub!");
}
public Bitmap getFrameAtTime(long timeUs) {
throw new RuntimeException("Stub!");
}
public Bitmap getFrameAtTime() {
throw new RuntimeException("Stub!");
}