Skip to content

A Go package for encoding and decoding video and audio files.

License

Notifications You must be signed in to change notification settings

unixpickle/ffmpego

Repository files navigation

ffmpego

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.

Usage

Writing a video

To encode a video, create a VideoWriter and write image.Images 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()

Reading a video

Decoding a video is similarly straightforward. Simply create a VideoReader and read image.Images from it:

vr, _ := NewVideoReader("input.mp4")

for {
    frame, err := vr.ReadFrame()
    if err == io.EOF {
        break
    }
    // Do something with `frame` here...
}

vr.Close()

Installation

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

About

A Go package for encoding and decoding video and audio files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages