giorgisio/goav has 2,134 GitHub stars and 356 forks. GitHot measured -1 in 7 days. Last checked 2026-11-09 08:53 UTC. Last push 2022-05-19.
Golang bindings for FFmpeg (This repository is no longer maintained)
Measured star growth
- in 24h
- Update delayed
- in 7 days
- -1
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalDeprecation Notice
This repository is no longer maintained.
goav
Golang binding for FFmpeg
A comprehensive binding to the ffmpeg video/audio manipulation library.
Usage
import "github.com/giorgisio/goav/avformat"
func main() {
filename := "sample.mp4"
// Register all formats and codecs
avformat.AvRegisterAll()
ctx := avformat.AvformatAllocContext()
// Open video file
if avformat.AvformatOpenInput(&ctx, filename, nil, nil) != 0 {
log.Println("Error: Couldn't open file.")
return
}
// Retrieve stream information
if ctx.AvformatFindStreamInfo(nil) < 0 {
log.Println("Error: Couldn't find stream information.")
// Close input file and free context
ctx.AvformatCloseInput()
return
}
//...
}
Libraries
avcodeccorresponds to the ffmpeg library: libavcodec [provides implementation of a wider range of codecs]avformatcorresponds to the ffmpeg library: libavformat [implements streaming protocols, container formats and basic I/O access]avutilcorresponds to the ffmpeg library: libavutil [includes hashers, decompressors and miscellaneous utility functions]avfiltercorresponds to the ffmpeg library: libavfilter [provides a mean to alter decoded Audio and Video through chain of filters]avdevicecorresponds to the ffmpeg library: libavdevice [provides an abstraction to access capture and playback devices]swresamplecorresponds to the ffmpeg library: libswresample [implements audio mixing and resampling routines]swscalecorresponds to the ffmpeg library: libswscale [implements color conversion and scaling routines]
Installation
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev
sudo apt install -y libavdevice-dev libavfilter-dev libswscale-dev libavcodec-dev libavformat-dev libswresample-dev libavutil-dev
sudo apt-get install yasm
export FFMPEG_ROOT=$HOME/ffmpeg
export CGO_LDFLAGS="-L$FFMPEG_ROOT/lib/ -lavcodec -lavformat -lavutil -lswscale -lswresample -lavdevice -lavfilter"
export CGO_CFLAGS="-I$FFMPEG_ROOT/include"
export LD_LIBRARY_PATH=$HOME/ffmpeg/lib
go get github.com/giorgisio/goav
More Examples
Coding examples are available in the examples/ directory.
Note
- Function names in Go are consistent with that of the libraries to help with easy search
- cgo: Extending Go with C
- goav comes with absolutely no warranty.
Contribute
- Fork this repo and create your own feature branch.
- Follow standard Go conventions
- Test your code.
- Create pull request
TODO
- Returning Errors
- Garbage Collection
- Review included/excluded functions from each library
- Go Tests
- Possible restructuring packages
- Tutorial01.c
- More Tutorial
License
This library is under the MIT License
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,500 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,396 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,840 starsmrdoob/three.js
JavaScript 3D Library.
117,983 stars