视频的第一帧

I'm creating a single page application with Golang on the backend and javascript on the frontend. I´d like to find a way how to get the first frame of a video using Golang.

First, I upload a .mp4 video file to the server. It is saved on the server.

Is there a way to get the first frame of this video, using Golang? It should be possible to do it using Javascript on frontend, but I don't feel like it is the right way to solve this issue.

I have no idea how to implement it using Golang, and I haven't found any useful libraries, not even built-in functions that could help me to solve this.

Every piece of advice or any recommendations will be much appreciated.

As suggested in the comments, using ffmpeg would be the easiest approach. Below is an example adapted from this answer:

package main

import (
    "bytes"
    "fmt"
    "os/exec"
)
func main() {
    filename := "test.mp4"
    width := 640
    height := 360
    cmd := exec.Command("ffmpeg", "-i", filename, "-vframes", "1", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-")
    var buffer bytes.Buffer
    cmd.Stdout = &buffer
    if cmd.Run() != nil {
        panic("could not generate frame")
    }
    // Do something with buffer, which contains a JPEG image
}