astiav is a Golang library providing C bindings for ffmpeg
It's only compatible with ffmpeg n7.0.
Its main goals are to:
- provide a better GO idiomatic API
- standard error pattern
- typed constants and flags
- struct-based functions
- ...
- provide the GO version of ffmpeg examples
- be fully tested
Examples are located in the examples directory and mirror as much as possible the ffmpeg examples.
| name | astiav | ffmpeg |
|---|---|---|
| BitStream Filtering | see | X |
| Custom IO Demuxing | see | see |
| Demuxing/Decoding | see | see |
| Filtering | see | see |
| Hardware Decoding | see | see |
| Remuxing | see | see |
| Scaling | see | see |
| Transcoding | see | see |
Tip: you can use the video sample located in the testdata directory for your tests
If you don't know how to install ffmpeg, you can use the following to install it from source:
$ make install-ffmpegffmpeg will be built from source in a directory named tmp and located in you working directory
For your GO code to pick up ffmpeg dependency automatically, you'll need to add the following environment variables:
(don't forget to replace {{ path to your working directory }} with the absolute path to your working directory)
export CGO_LDFLAGS="-L{{ path to your working directory }}/tmp/n7.0/lib/",
export CGO_CFLAGS="-I{{ path to your working directory }}/tmp/n7.0/include/",
export PKG_CONFIG_PATH="{{ path to your working directory }}/tmp/n7.0/lib/pkgconfig",After maintaining for several years the most starred fork of goav, I've decided to write from scratch my own C bindings to fix most of the problems I still encountered using goav.