goav
Comprehensive Go bindings for FFmpeg
About goav
Deprecation 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
Frequently Asked Questions
What is goav?
goav is a Video library for the Go programming language. Comprehensive Go bindings for FFmpeg
How many GitHub stars does goav have?
goav has 2,136 GitHub stars in the directory's latest synchronization.
How do I install goav?
Install goav with the Go module system using `go get giorgisio/goav`. Check the repository for the current installation instructions.
What category does goav belong to?
goav is listed under Video, specifically Video.