Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. go-astiav

go-astiav

MITGo

Go bindings for FFmpeg and libav with an idiomatic API, full test coverage, and mirrored examples.

GitHubGitHub
707 stars70 forks0 contributors

What is go-astiav?

astiav is a Go library that provides C bindings for FFmpeg and libav, allowing developers to perform multimedia processing tasks like encoding, decoding, filtering, and remuxing directly in Go. It solves the problem of integrating low-level multimedia libraries into Go applications by offering an idiomatic API that mirrors FFmpeg's functionality.

Target Audience

Go developers working on multimedia applications, such as video processing tools, streaming services, or audio manipulation software, who need reliable and performant bindings to FFmpeg.

Value Proposition

Developers choose astiav for its Go-idiomatic design, comprehensive test coverage, and direct mapping to FFmpeg examples, which reduces the learning curve and ensures correctness compared to other bindings.

Overview

Golang ffmpeg and libav C bindings

Use Cases

Best For

  • Building Go applications that require video transcoding or remuxing
  • Implementing custom audio/video filters in Go
  • Adding hardware-accelerated encoding or decoding to Go projects
  • Creating multimedia tools with demuxing and decoding capabilities
  • Developing streaming services that need efficient media processing
  • Integrating FFmpeg functionality into Go-based media pipelines

Not Ideal For

  • Projects requiring compatibility with FFmpeg versions other than n8.0, such as those needing newer codecs or bug fixes
  • Serverless or containerized environments where installing FFmpeg from source and managing C dependencies is impractical
  • Teams that prioritize API stability and avoid libraries with frequent, unversioned breaking changes
  • Windows-based development setups without dedicated sysadmin support for msys2 and mingw64 toolchain configuration

Pros & Cons

Pros

Go Idiomatic API

Uses standard Go error patterns, typed constants, and struct-based functions for a natural developer experience, as highlighted in the README's goals.

Comprehensive Examples

Includes Go versions of official FFmpeg examples covering demuxing, decoding, filtering, and hardware acceleration, providing practical starting points for common tasks.

Thorough Testing

Backed by continuous integration and high test coverage, ensuring reliability in multimedia operations, as evidenced by the Coveralls badge and test workflow.

Detailed Documentation

Each method is documented with links to corresponding C functions in FFmpeg's source, serving as an authoritative reference for deep dives into underlying behavior.

Cons

Limited FFmpeg Version Support

Only compatible with FFmpeg n8.0, restricting access to newer features and fixes, which may necessitate forks or workarounds for evolving projects.

Breaking Changes Without Versioning

Breaking changes are introduced without using the Go v2 pattern, as stated in the README, leading to potential instability and maintenance overhead for users.

Complex Dependency Setup

Requires manual installation of FFmpeg from source and environment variable configuration, adding significant setup time compared to package-managed alternatives.

Frequently Asked Questions

Quick Stats

Stars707
Forks70
Contributors0
Open Issues1
Last commit1 month ago
CreatedSince 2022

Tags

#media-library#libav#c-bindings#hardware-acceleration#audio-decoding#video-encoding#multimedia-processing#go

Built With

G
Go
l
libav
F
FFmpeg
C
C++

Included in

Go169.1k
Auto-fetched 13 hours ago

Related Projects

goavgoav

Golang bindings for FFmpeg (This repository is no longer maintained)

Stars2,137
Forks360
Last commit4 years ago
gmfgmf

Go Media Framework

Stars931
Forks171
Last commit3 years ago
gortsplibgortsplib

RTSP client and server library for the Go programming language

Stars909
Forks263
Last commit2 days ago
go-astisubgo-astisub

Manipulate subtitles in GO (.srt, .ssa/.ass, .stl, .ttml, .vtt (webvtt), teletext, etc.)

Stars695
Forks125
Last commit12 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub