Go to file
Kagami Hiiragi c81987e7ab Fix build for old libaom 2019-03-17 19:37:27 +03:00
cmd/avif Initial commit 2019-03-17 15:16:16 +03:00
.gitignore Initial commit 2019-03-17 15:16:16 +03:00
.travis.yml Fix travis build 2019-03-17 19:33:07 +03:00
COPYING Initial commit 2019-03-17 15:16:16 +03:00
Makefile Fix travis build 2019-03-17 19:33:07 +03:00
README.md Add link to avif repo 2019-03-17 15:35:28 +03:00
av1.c Fix build for old libaom 2019-03-17 19:37:27 +03:00
av1.h Initial commit 2019-03-17 15:16:16 +03:00
avif.go Initial commit 2019-03-17 15:16:16 +03:00
example_test.go Example fix 2019-03-17 15:28:20 +03:00
gofmt-staged.sh Initial commit 2019-03-17 15:16:16 +03:00
mp4.go Initial commit 2019-03-17 15:16:16 +03:00

README.md

go-avif Build Status GoDoc

go-avif implements AVIF (AV1 Still Image File Format) encoder for Go using libaom, the highest quality AV1 codec at the moment.

Requirements

Make sure libaom is installed. On typical Linux distro just run:

sudo apt-get install libaom-dev

Usage

To use go-avif in your Go code:

import "github.com/Kagami/go-avif"

To install go-avif in your $GOPATH:

go get github.com/Kagami/go-avif

For further details see GoDoc documentation.

Example

package main

import (
	"image"
	_ "image/jpeg"
	"log"
	"os"

	"github.com/Kagami/go-avif"
)

func main() {
	if len(os.Args) != 3 {
		log.Fatalf("Usage: %s src.jpg dst.avif", os.Args[0])
	}

	srcPath := os.Args[1]
	src, err := os.Open(srcPath)
	if err != nil {
		log.Fatalf("Can't open sorce file: %v", err)
	}

	dstPath := os.Args[2]
	dst, err := os.Create(dstPath)
	if err != nil {
		log.Fatalf("Can't create destination file: %v", err)
	}

	img, _, err := image.Decode(src)
	if err != nil {
		log.Fatalf("Can't decode source file: %v", err)
	}

	err = avif.Encode(dst, img, nil)
	if err != nil {
		log.Fatalf("Can't encode source image: %v", err)
	}

	log.Printf("Encoded AVIF at %s", dstPath)
}

CLI

go-avif comes with handy CLI utility avif. It supports encoding of JPEG and PNG files to AVIF:

# Compile and put avif binary to $GOPATH/bin
go get github.com/Kagami/go-avif/...

# Encode JPEG to AVIF with default settings
avif -e cat.jpg -o kitty.avif

# Encode PNG with slowest speed
avif -e dog.png -o doggy.avif --best -q 15

# Lossless encoding
avif -e pig.png -o piggy.avif --lossless

# Show help
avif -h

License

go-avif is licensed under CC0.