goav alternatives and similar packages
Based on the "Video" category.
Alternatively, view goav alternatives based on common mentions on social networks and blogs.
-
M3U8
Parser and generator of M3U8-playlists for Apple HLS. Library for Go language. :cinema: -
gortsplib
RTSP 1.0 client and server library for the Go programming language -
go-astisub
Manipulate subtitles in GO (.srt, .ssa/.ass, .stl, .ttml, .vtt (webvtt), teletext, etc.) -
gst
Go bindings for GStreamer (retired: currently I don't use/develop this package) -
go-m3u8
Parse and generate m3u8 playlists for Apple HTTP Live Streaming (HLS) in Golang (ported from gem https://github.com/sethdeckard/m3u8) -
go-mpd
Go library for parsing and generating MPEG-DASH Media Presentation Description (MPD) files -
golibnotify
Go bindings for libnotify -- Create and update OS notifications in linux
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of goav or a related project?
Popular Comparisons
README
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
avcodec
corresponds to the ffmpeg library: libavcodec [provides implementation of a wider range of codecs]avformat
corresponds to the ffmpeg library: libavformat [implements streaming protocols, container formats and basic I/O access]avutil
corresponds to the ffmpeg library: libavutil [includes hashers, decompressors and miscellaneous utility functions]avfilter
corresponds to the ffmpeg library: libavfilter [provides a mean to alter decoded Audio and Video through chain of filters]avdevice
corresponds to the ffmpeg library: libavdevice [provides an abstraction to access capture and playback devices]swresample
corresponds to the ffmpeg library: libswresample [implements audio mixing and resampling routines]swscale
corresponds 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
- [X] Review included/excluded functions from each library
- [ ] Go Tests
- [ ] Possible restructuring packages
- [x] Tutorial01.c
- [ ] More Tutorial
License
This library is under the MIT License
*Note that all licence references and agreements mentioned in the goav README section above
are relevant to that project's source code only.