Work in Progress: These docs are incomplete and may contain inaccuracies. Norri is not yet available for download.

Source Code

Norri includes components licensed under the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL). Source code for these components is provided below.


norri-transcoder

A build of FFmpeg for media server transcoding, streaming, and codec operations. Based on an upstream media-server FFmpeg fork, itself derived from FFmpeg.

License

norri-transcoder enables GPL components and --enable-version3, and is therefore licensed under the GNU General Public License v3 or later (GPL-3.0+).

The build configuration and all license texts are included in the source tarball.

Attribution

  • FFmpeg. ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.
  • Upstream media-server FFmpeg fork. Full attribution is preserved in the source tarball.

Changes from upstream

norri-transcoder is derived from an upstream media-server FFmpeg fork with the following changes:

  • Removed fdk-aac. The third-party FDK AAC encoder has been removed; norri-transcoder uses FFmpeg’s native AAC encoder instead. The upstream patch that reclassified fdk-aac-stripped as a standard library has also been removed, reducing the patch count from 93 to 92.
  • Rebranded. Package name, installation paths, and version string changed to norri-transcoder.
  • Self-contained install. The build script bundles the matched libplacebo and its userspace dependencies, while sourcing the host GPU stack (libva, libdrm, Vulkan and OpenCL loaders) from the host so it matches the host driver.

The remaining 92 media-server patches from upstream are preserved unmodified.

Modified files carry notices identifying the changes and their date, as required by GPL v2 Section 2(a).

Source code

norri-transcoder-7.1.3-2.tar.gz
sha256: b53c5852318dcc73e609b898f090952b7f25c7e0269e63c80ea7c3db67cb89e9


norri-wasm

A WebAssembly build of the libass subtitle renderer for the browser, used by Norri’s web client to render ASS/SSA subtitles. Forked from an actively maintained downstream JavascriptSubtitlesOctopus branch, itself a fork of the upstream github.com/libass/JavascriptSubtitlesOctopus project.

License

The package license expression is:

LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0

The dominant license for the relinkable browser subtitle renderer is GNU Lesser General Public License v2.1 or later (LGPL-2.1+). Bundled libraries retain their own licenses, including FreeType under FTL or GPL-2.0-or-later, plus MIT, MIT-Modern-Variant, ISC, NTP, Zlib, and BSL-1.0 components. All license texts are included in the source distribution.

Attribution

Changes from upstream

norri-wasm is derived from the actively maintained JavascriptSubtitlesOctopus fork with the following changes:

  • Rebranded. Package name and homepage changed; npm name is now norri-wasm.
  • No code modifications. The renderer, worker, and WebAssembly artifacts are preserved unmodified to retain upstream subtitle-rendering fixes.

Source code

Norri provides complete corresponding source as a componentized source set. The root archive contains the norri-wasm source tree, build scripts, .gitmodules, SUBMODULES.txt, COPYING.LESSER, and COPYRIGHT. The submodule archives contain the pinned source trees for the bundled libraries. Unpack all archives into the same parent directory to reconstruct the complete source tree without contacting external repositories.

ArchiveSHA-256
norri-wasm-4.2.5-norri.1-src.tar.gz0f94bd3b1c55e4f15adff5dd0b3ffb30ee439a76fbae341379e2b78779bbe7f1
norri-wasm-4.2.5-norri.1-submodule-libass.tar.xz25f635845b5bd41fe937ea122f2c2269d9330d2f3be7ba8a8439db1656b74432
norri-wasm-4.2.5-norri.1-submodule-fribidi.tar.xzfbebbcbeea6b4b7262907ab7b72629c6ea2ee7beabb180ee1af015704cf3038f
norri-wasm-4.2.5-norri.1-submodule-fontconfig.tar.xz7e40446ce2c392a01294fb88630b0b86016b08457ab34f2d7923bc3cfc8bccc1
norri-wasm-4.2.5-norri.1-submodule-freetype.tar.xzac030f39b8565997db806fe747b1b75b6a40f7b37705148e61fafe90a15526a7
norri-wasm-4.2.5-norri.1-submodule-expat.tar.xzf5964fb7e097e16e4dc90f709f1b212b557738945a061316551c329176f2712e
norri-wasm-4.2.5-norri.1-submodule-harfbuzz.tar.xz247a0a0a5ef65077d8844d627ad932cdd272cd1101a999b6c9192eb20e36b70c
norri-wasm-4.2.5-norri.1-submodule-brotli.tar.xzc4ed7a34bae97e65e14c1fc0327cc2a88d94537cf97c0de237bfc38c2707c793

This split keeps each file under the static hosting file-size limit while preserving a complete, machine-readable source distribution for relinking.


Chromaprint (fpcalc)

The fpcalc audio fingerprinting tool from Chromaprint, bundled with the server and used to identify music tracks that cannot be matched from their tags. Norri runs it as a separate command-line process; it is not linked into Norri’s own code.

License

GNU Lesser General Public License v2.1 or later (LGPL-2.1+). The fpcalc build embeds FFmpeg libraries (avcodec, avformat, avutil, swresample) for audio decoding, which are also LGPL-2.1-or-later.

Attribution

Changes from upstream

Norri ships fpcalc unmodified. The complete corresponding source is therefore the upstream Chromaprint release.

Source code

As Norri ships this component unmodified, the complete corresponding source is the upstream release: github.com/acoustid/chromaprint/releases.


norri-airplay

AirPlay audio sending to speakers and devices like HomePods. Translated from the AirPlay component of OwnTone (formerly forked-daapd).

License

GNU General Public License v2 or later (GPL-2.0+)

Attribution

  • OwnTone (formerly forked-daapd). github.com/owntone/owntone-server. Copyright (c) 2009-2011 Julien BLACHE, Copyright (c) 2012-2020 Espen Jürgensen, and OwnTone contributors.
  • FFmpeg (ALAC encoder). ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.

Changes from upstream

norri-airplay is a translation of OwnTone’s AirPlay implementation from C to Go, extracted as a standalone component with an integrated ALAC encoder.

norri-airplayOwnTone source
internal/airplay2/src/outputs/airplay.c
internal/raop/src/outputs/raop.c
internal/hap/src/pair_ap/
internal/rtp/src/outputs/rtp_common.c
internal/discovery/src/mdns.c
internal/audio/src/outputs/raop.c (ALAC encoding) + FFmpeg

Each Go source file carries a header identifying the original OwnTone source it is derived from.

Source code

Source downloads will be available here when Norri reaches public release.


Norri for Apple TV

The Apple TV app plays media using AetherEngine, which builds on FFmpeg and several supporting libraries. All of these are embedded in the app as dynamic frameworks, which means you are able to replace any of them with your own build of the library.

Norri ships these components unmodified. The complete corresponding source is therefore the upstream release identified for each below.

License

ComponentVersionLicense
AetherEngine5.29.0LGPL-3.0-or-later, with an App Store / DRM exception
FFmpeg (avcodec, avfilter, avformat, avutil, swresample, swscale)via FFmpegBuild 2.3.0LGPL-2.1-or-later
dav1dvia FFmpegBuild 2.3.0BSD-2-Clause
zimgvia FFmpegBuild 2.3.0WTFPL
libzvbivia FFmpegBuild 2.3.0LGPL-2.0-or-later (ure.c MIT)
libdovivia LibDovi 1.0.2MIT
SMBClient0.3.1MIT

The FFmpeg build enables neither --enable-gpl nor --enable-version3, so no GPL components are compiled into the Apple TV app.

Attribution

Changes from upstream

Norri makes no changes to any of these components.

One upstream change is worth noting because it affects licensing: the FFmpegBuild distribution excludes libzvbi’s three GPL-2 source files (packet-830.c, pdc.c, exp-vtx.c), replacing the referenced entry points with LGPL stubs. The libzvbi build shipped in the Apple TV app therefore contains no GPL code.

Source code

As Norri ships these components unmodified, the complete corresponding source is the upstream tagged release in each case:

ComponentSource
AetherEngine 5.29.0github.com/superuser404notfound/AetherEngine
FFmpeg, dav1d, zimg, libzvbigithub.com/superuser404notfound/FFmpegBuild
libdovigithub.com/superuser404notfound/LibDovi
SMBClient 0.3.1github.com/kishikawakatsumi/SMBClient

Should Norri ever ship a modified build of any of these, the modified source will be published here and this page updated accordingly.


Building from source

Each source tarball includes a build script and instructions needed to reproduce the distributed binaries.


Written offer for source code

In accordance with the GNU General Public License and GNU Lesser General Public License, we will provide the complete corresponding source code for any GPL-licensed or LGPL-licensed component distributed with Norri to any party, for a period of at least three years from the date of each release, at no charge beyond the cost of distribution.

To request source code, contact hello@norri.tv.