ffmpego is a Go wrapper around the ffmpeg
command for reading and writing videos. It can be used to programmatically manipulate media with a simple, friendly interface.
To encode a video, create a VideoWriter
and write image.Image
s to it. Here's the simplest possible example of encoding a video:
fps := 24.0
width := 50
height := 50
vw, _ := ffmpego.NewVideoWriter("output.mp4", width, height, fps)
for i := 0; i < 24; i++ {
// Create your image.
frame := image.NewGray(image.Rect(0, 0, width, height))
vw.WriteFrame(frame)
}
vw.Close()
Decoding a video is similarly straightforward. Simply create a VideoReader
and read image.Image
s from it:
vr, _ := NewVideoReader("input.mp4")
for {
frame, err := vr.ReadFrame()
if err == io.EOF {
break
}
// Do something with `frame` here...
}
vr.Close()
This project depends on the ffmpeg
command. If you have ffmpeg
installed, ffmpego should already work out of the box.
If you do not already have ffmpeg, you can typically install it using your OS's package manager.
Ubuntu:
$ apt install ffmpeg
macOS:
$ brew install ffmpeg