* Add IterateCodecs, Add codec.HasHardwareConfigMethodFlag * Remove HasHardwareConfigMethodFlag test because git worklow does not support hw HasHardwareConfigMethodFlag is tested on my local device but does not work in git * Review Changes Remove unused arg in HardwareConfigs Add mehtod to get all codecs Update test * Remove codecporcessor type
astiav is a Golang library providing C bindings for ffmpeg
It's only compatible with ffmpeg n5.1.2.
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
Examples are located in the examples directory and mirror as much as possible the ffmpeg examples.
| name | astiav | ffmpeg |
|---|---|---|
| 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
Install ffmpeg from source
If you don't know how to install ffmpeg, you can use the following to install it from source:
$ make install-ffmpeg
ffmpeg 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/n5.1.2/lib/",
export CGO_CFLAGS="-I{{ path to your working directory }}/tmp/n5.1.2/include/",
export PKG_CONFIG_PATH="{{ path to your working directory }}/tmp/n5.1.2/lib/pkgconfig",
Why astiav?
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.