[FREE / BETA] Extract image frame from video


Hi! This is a simple extension to extract an frame from a video :hugs: Hope you like it :slight_smile: This extension is still under development so there might be a bunch of bugs :sweat_smile:
(a more detailed documentation will be made)

This extension is suggested by @eps_prieur:

Basically it generates an image and temporarily stored in the external storage. It will be deleted once the application is stopped (OnDestroy)


Block Description
Error Raises when any error occurred
GotImage Raises when an image is extracted by the async method
GetImageViaPath Get image of a video with a given time. Use -1 if you don’t need any option.
Path can accept: Absolute path, File URL path, Uri path and URL (direct media link).
Return an external path, or “Error” if any error occurred.
GetImageViaPathAsync Does the same as GetImageViaPath but run in an async way.
Closest, ClosestSync, NextSync, PreviousSync The constant of options

For options, here is a detailed documentation:

a hint on how the frame is found. Use OPTION_PREVIOUS_SYNC if one wants to retrieve a sync frame that has a timestamp earlier than or the same as timeUs. Use OPTION_NEXT_SYNC if one wants to retrieve a sync frame that has a timestamp later than or the same as timeUs. Use OPTION_CLOSEST_SYNC if one wants to retrieve a sync frame that has a timestamp closest to or the same as timeUs. Use OPTION_CLOSEST if one wants to retrieve a frame that may or may not be a sync frame but is closest to or the same as timeUs. OPTION_CLOSEST often has larger performance overhead compared to the other options if there is no sync frame located at timeUs. Value is either 0 or a combination of OPTION_PREVIOUS_SYNC , OPTION_NEXT_SYNC , OPTION_CLOSEST_SYNC , and OPTION_CLOSEST

Reference: MediaMetadataRetriever | Android Developers


List of version(s)

Version 1 (18.4 KB)


  • android.permission.WRITE_EXTERNAL_STORAGE is required.
  • Online video might not work
  • Time of video might not be exact.

Big thanks to

  • Evan W. Patton in AI2 for the implemented the class of QUtil
  • People who helped me during the development: @Mohamed_Tamer

Great job :partying_face::+1:

Nice Work I Have Waiting For It

I Have A Question Why You Are Using Two Java File QUtil.java What Is Benefits Of It Why We Cant Put these Code In One File ?

That is for part of the code for determining the videoPath you’ve given. And there’s nothing bad to use two file

1 Like

Very good !
Thank you so much.
Personally, I did not find a bug, the handling is

I left the options at -1 because I don’t know what the option is and how to rate it.

But once again a big, very big thank you!

1 Like

Thanks a lot!

By default you should put 0.

Nice Extension :grin::+1:

1 Like

OK !
I really love this extension for my project!

Do you think that it would be possible to be able to define the folder in which the images are stored? (by default, at the root)

I also noticed that some created images are renamed with a “-” in front of them. It doesn’t necessarily interfere with opening it but it’s surprising -641997442.png.
By the way, what does this generated figure correspond to: 641997442
Thank you again for the time spent reading me and making this extension.

1 Like

The file name is a random number for not overwriting other files.

I will definitely try it, thanks for suggesting!