Glide - загрузить один кадр из видео в определенное время?
Я пытаюсь использовать Glide для перехода между кадрами в видеофайле (не сталкиваясь с проблемой поиска ключевого кадра, от которой страдает Android). Я могу сделать это в Пикассо, выполнив что-то вроде:
picasso = new Picasso.Builder(MainActivity.this).addRequestHandler(new PicassoVideoFrameRequestHandler()).build();
picasso.load("videoframe://" + Environment.getExternalStorageDirectory().toString() +
"/source.mp4#" + frameNumber)
.placeholder(drawable)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.into(imageView);
(frameNumber - это просто целое число, которое увеличивается на 50000 микросекунд каждый раз). У меня также есть PicassoVideoFrameRequestHandler, как это:
public class PicassoVideoFrameRequestHandler extends RequestHandler {
public static final String SCHEME = "videoframe";
@Override public boolean canHandleRequest(Request data) {
return SCHEME.equals(data.uri.getScheme());
}
@Override
public Result load(Request data, int networkPolicy) throws IOException {
FFmpegMediaMetadataRetriever mediaMetadataRetriever = new FFmpegMediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(data.uri.getPath());
String offsetString = data.uri.getFragment();
long offset = Long.parseLong(offsetString);
Bitmap bitmap = mediaMetadataRetriever.getFrameAtTime(offset, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
return new Result(bitmap, Picasso.LoadedFrom.DISK);
}
}
Вместо этого я бы хотел использовать Glide, так как он немного лучше обрабатывает память. Есть ли способ использовать эту функцию в Glide?
Или, действительно, любой другой способ создать набор кадров из видео, через которое я могу пройти!
Спасибо!