我想从 android 中服务器的视频 url 创建缩略图
I want to create thumbnail from video url of server in android
我的代码,
public static Bitmap retriveVideoFrameFromVideo(String videoPath) throws Throwable {
Bitmap bitmap = null;
MediaMetadataRetriever mediaMetadataRetriever = null;
try {
mediaMetadataRetriever = new MediaMetadataRetriever();
if (Build.VERSION.SDK_INT >= 14)
mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
else
mediaMetadataRetriever.setDataSource(videoPath);
// mediaMetadataRetriever.setDataSource(videoPath);
bitmap = mediaMetadataRetriever.getFrameAtTime();
} catch (Exception e) {
e.printStackTrace();
throw new Throwable(
"Exception in retriveVideoFrameFromVideo(String videoPath)"
+ e.getMessage());
} finally {
if (mediaMetadataRetriever != null) {
mediaMetadataRetriever.release();
}
}
return bitmap;
}
这是创建缩略图,但我用了很多时间 ListView
然后 ListView
被挂断了。
你需要 运行 异步方法中的这个任务 如果你使用 RecycleView
则在 onBindViewHolder()
中这样,如果你使用 ListView
则放在 getView()
]:
new AsyncTask<String, String, String>() {
Bitmap bitmapVideo;
@Override
protected String doInBackground(String... strings) {
try {
//Your method call here
bitmapVideo =retriveVideoFrameFromVideo(strings[0]);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String id) {
super.onPostExecute(id);
if (bitmapVideo != null) {
//Load your bitmap here
holder.imgVideoThumb.setImageBitmap(bitmapVideo);
}
}
}.execute(getYourVideolink());
为了提高效率,您将位图图像保存在本地并在调用 AsyncTask()
之前检查天气是否已将此图像保存在本地,如果它们不是从本地加载并且没有新的 运行 AsyncTask()
再次
我的代码,
public static Bitmap retriveVideoFrameFromVideo(String videoPath) throws Throwable {
Bitmap bitmap = null;
MediaMetadataRetriever mediaMetadataRetriever = null;
try {
mediaMetadataRetriever = new MediaMetadataRetriever();
if (Build.VERSION.SDK_INT >= 14)
mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
else
mediaMetadataRetriever.setDataSource(videoPath);
// mediaMetadataRetriever.setDataSource(videoPath);
bitmap = mediaMetadataRetriever.getFrameAtTime();
} catch (Exception e) {
e.printStackTrace();
throw new Throwable(
"Exception in retriveVideoFrameFromVideo(String videoPath)"
+ e.getMessage());
} finally {
if (mediaMetadataRetriever != null) {
mediaMetadataRetriever.release();
}
}
return bitmap;
}
这是创建缩略图,但我用了很多时间 ListView
然后 ListView
被挂断了。
你需要 运行 异步方法中的这个任务 如果你使用 RecycleView
则在 onBindViewHolder()
中这样,如果你使用 ListView
则放在 getView()
]:
new AsyncTask<String, String, String>() {
Bitmap bitmapVideo;
@Override
protected String doInBackground(String... strings) {
try {
//Your method call here
bitmapVideo =retriveVideoFrameFromVideo(strings[0]);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String id) {
super.onPostExecute(id);
if (bitmapVideo != null) {
//Load your bitmap here
holder.imgVideoThumb.setImageBitmap(bitmapVideo);
}
}
}.execute(getYourVideolink());
为了提高效率,您将位图图像保存在本地并在调用 AsyncTask()
之前检查天气是否已将此图像保存在本地,如果它们不是从本地加载并且没有新的 运行 AsyncTask()
再次