go2rtc is a free, open source digital asset management (dam) project written in Go and released under MIT. It has 14,208 GitHub stars, 1,323 forks and 928 open issues, and was last pushed 11 days ago. On this registry it ranks #2 of 25 tracked projects in Digital Asset Management (DAM), with 5 head-to-head comparisons available. It gained 7 stars over the last 3 tracked days.

What is go2rtc?

What it is

go2rtc is a camera streaming application written in Go and released under the MIT license. It runs as a zero-dependency binary on Windows, macOS, Linux, and FreeBSD, and it also ships as a Docker image, a Home Assistant add-on, and a Home Assistant integration. The project lives in the smart home and media server ecosystem, with topics spanning Home Assistant, HomeKit, ONVIF, RTSP, RTMP, HLS, MJPEG, MP4, and FFmpeg. It can be embedded into another project through its HTTP API or run as a standalone application with a web interface at http://localhost:1984/.

The concrete problem it solves is protocol and codec fragmentation across cameras and clients. Cameras speak many input formats, browsers and smart home platforms accept only a narrow set of output formats, and the two rarely line up. go2rtc ingests streams from dozens of formats and protocols, republishes them in all popular output formats, and auto-matches the streaming format and codec that a given client supports. It also handles two-way audio, mixes tracks from different sources into a single stream, and applies on-the-fly transcoding through FFmpeg only when necessary, which keeps latency low for the protocols that support it.

Key capabilities

  • Streaming input from dozens of formats and protocols, with output in all popular formats and ingest in a number of popular formats.
  • Zero-delay streaming for many supported protocols, targeting the lowest possible latency.
  • On-the-fly transcoding via FFmpeg, applied only when necessary.
  • Two-way audio support across many formats, including streaming audio back to cameras that support it.
  • Mixing tracks from different sources into a single stream.
  • Auto-match of client-supported streaming formats and codecs.
  • Streaming stats for all active connections, plus publishing any source to services such as YouTube and Telegram.

Who uses it and how

  • Home Assistant users install it as an add-on or integration to bring camera streams into their smart home platform.
  • Self-hosters run the standalone binary or Docker image and add streams through the configuration file, then view them in the built-in web interface.
  • Developers integrate the HTTP API into a smart home platform or another project rather than running go2rtc on its own.
  • Operators publish an existing source to popular streaming services such as YouTube and Telegram.
  • Users with two-way audio cameras stream audio to the camera and receive audio back through the same pipeline.

Getting started

Download the binary for the target OS from the latest release, or use the Docker image, the Home Assistant add-on, or the Home Assistant integration. After starting it, open http://localhost:1984/ and add streams to the configuration.

When to use it — and when not to

go2rtc is a strong fit when a self-hoster needs one process to bridge many camera protocols and client formats without a paid streaming product, and it stays small because it is a zero-dependency binary. A self-hoster still has to operate the host, write the stream configuration, and provide FFmpeg where transcoding is required. The open issue count is high relative to the project's age, so users should expect active but busy maintenance.

project readme (upstream, from github) — read inline

go2rtc - GitHub Stars go2rtc - Docker Pulls go2rtc - GitHub Downloads

go2rtc - Trendshift

Ultimate camera streaming application with support for dozens formats and protocols.

Inspired by

Table of Contents

Installation

  1. Download binary or use Docker or Home Assistant add-on or integration
  2. Open web interface: http://localhost:1984/
  3. Add streams to config

Developers: integrate HTTP API into your smart home platform.

go2rtc: Binary

Download binary for your OS from latest release:

name description
go2rtc_win64.zip Windows 10+ 64-bit
go2rtc_win32.zip Windows 10+ 32-bit
go2rtc_win_arm64.zip Windows ARM 64-bit
go2rtc_linux_amd64 Linux 64-bit
go2rtc_linux_i386 Linux 32-bit
go2rtc_linux_arm64 Linux ARM 64-bit (ex. Raspberry 64-bit OS)
go2rtc_linux_arm Linux ARM 32-bit (ex. Raspberry 32-bit OS)
go2rtc_linux_armv6 Linux ARMv6 (for old Raspberry 1 and Zero)
go2rtc_linux_mipsel Linux MIPS (ex. Xiaomi Gateway 3, Wyze cameras)
go2rtc_mac_amd64.zip macOS 11+ Intel 64-bit
go2rtc_mac_arm64.zip macOS ARM 64-bit
go2rtc_freebsd_amd64.zip FreeBSD 64-bit
go2rtc_freebsd_arm64.zip FreeBSD ARM 64-bit

Don't forget to fix the rights chmod +x go2rtc_xxx_xxx on Linux and Mac.

PS. The application is compiled with the latest versions of the Go language for maximum speed and security. Therefore, the minimum OS versions depend on the Go language.

go2rtc: Docker

The Docker containers alexxit/go2rtc and ghcr.io/alexxit/go2rtc support multiple architectures including 386, amd64, arm/v6, arm/v7 and arm64. These containers offer the same functionality as the Home Assistant add-on but are designed to operate independently of Ho

readme truncated — read the full docs on github

Frequently asked questions

Is go2rtc free to use?

go2rtc is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does go2rtc do?

Ultimate camera streaming application

What is go2rtc written in?

go2rtc is primarily written in Go. Its source is publicly available at https://github.com/AlexxIT/go2rtc, and it has 14,208 GitHub stars.