[ActiveStorage] Make a preview from a middle frame of the attached video

Currently, if you want to make a preview for a video file ActiveStorage::Previewer::VideoPreviewer will pick the first frame of the video https://github.com/rails/rails/blob/master/activestorage/lib/active_storage/previewer/video_previewer.rb#L19 without any options to customize this behavior.

Since the first frames are often not very informative(f.e. black start screen) I suggest adding the ability to pick a screenshot for a preview from a middle of the video.

record.attachment.preview(middle_frame: true)


This API would be convenient, but since the variation isn’t passed into the previewer, it will require changes not only in VideoPreviewer class.

What will be your thoughts about this feature?

In the case of positive feedback, I’ll be glad to start implementation.

Or passing a frame: option that accepts a specific frame number or a flag such as :middle.