I'd do it with FFmpeg, which you can get through Homebrew, or alternatively ffmpegX.
In the first case, install Homebrew and then run brew install ffmpeg. This will require Xcode and building from source, which might be a bit of an overhead for your simple requirement.
In the second case, install the .app, and use the ffmpeg version bundled with it โ however be advised that this version is from 2006, and therefore might not work with all input files.
/Applications/ffmpegX.app/Contents/Resources/ffmpeg
It worked for a h.264/MP4 clip for me.
Regardless, use FFmpeg to output each frame individually:
ffmpeg -i /path/to/video.mkv /path/to/output-%04d.jpg
You can also use png instead of jpg for lossless results, and change the number in %04d if you need more digits when the file is longer.
Create Quick Action to Extract Frame From Video
screen capture - How to extract still frame as image file from a video on macOS? - Ask Different
Extracting frames from a video
ffmpeg - ffmpegX extract frames from video - Stack Overflow
How to extract frames from video on Windows 11/10?
Can I extract the last frame to extend an AI video?
How to extract one frame of a video every N seconds?
I have a collection of mostly static images that are saved as videos. I'd like to extract a frame as an image while maintaining as much image quality as possible. I could do this with ffmpeg, but I'm wondering if there's an easy way to create a Quick Action to do it.
Thanks for any help!
I found two ways (references: search results from discussions.apple.com)
[Better] Specific to VLC Media Player
- Pause video at desired frame and from Menu bar select
Video>Snapshot. - A
vlcsnap-xxxx.pngfile of the current frame will get stored in~/Desktop

- Pause video at desired frame and from Menu bar select
Applicable to any video player application
Use macOS's screenshot feature
- Pause video at desired frame and hit โ Command โง Shift 5 to open screenshot overlay and in the hovering bar select 2nd option:
Capture Selected Window[ ref-1 , ref-2 ] - after this click on your video-player window to grab screenshot of it's contents.

- Pause video at desired frame and hit โ Command โง Shift 5 to open screenshot overlay and in the hovering bar select 2nd option:
VLC Video > Snapshot writes a PNG of the current frame if you have VLC installed.
If you want that same grab without installing a player, VideoToScreenshots is a browser picker: drop the local file, play to the frame, click Take Screenshot (S), download a PNG. Not a CLI. The file stays on the machine. Works in the browser on a Mac.
Disclosure: I work on VideoToScreenshots.
https://videotoscreenshots.com/usecases/grab-exact-frame-from-video
I tried the Get Frames From Image action and the Get Images From Input but they both seem to just return the first frame only from the video?