Reputation: 1411
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.
Upvotes: 4
Views: 5841
Reputation:
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
}
Upvotes: 12