Go to file
Kagami Hiiragi 9a5f72d556 Add how to display section 2019-03-17 23:46:23 +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 how to display section 2019-03-17 23:46:23 +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 Improve docs 2019-03-17 20:52:27 +03:00
example_test.go Improve docs 2019-03-17 20:52:27 +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

Display

To display resulting AVIF files take a look at software listed here. E.g. use avif.js web viewer.

License

go-avif is licensed under CC0.