Open Source in Neverlag

Stand: 26. September 2026

Neverlag spielt Video mit dem mpv-Stapel: mpv, FFmpeg, libplacebo und den Untertitel-Bibliotheken darum herum. Der grösste Teil steht unter der GNU Lesser General Public License (LGPL) 2.1 oder neuer. Diese Seite ist der Hinweis, den die LGPL verlangt: welche Komponenten in der App stecken, in welchen Versionen genau, wo ihr Quellcode liegt, was wir geändert haben, wie wir bauen, wie du die Bibliothek austauschen kannst — und unser schriftliches Angebot, den Quellcode zu liefern.

Neverlag selbst — die App, ihre Oberfläche und alles ausserhalb des Medien-Frameworks — ist nicht Open Source. Die hier aufgeführten Bibliotheken sind es und bleiben unter ihren eigenen Lizenzen. Die Lizenztexte stehen in der App unter Einstellungen → Über Neverlag → Rechtliches → Open-Source-Lizenzen, unverändert aus den Quellpaketen.

Komponenten

Versionen wie im Build festgelegt (Vendor/build-scripts/versions.env im Neverlag-Repository). Jeder Quellcode-Link zeigt auf genau diese Version; die Prüfsumme ist der SHA-256 des Release-Archivs, aus dem wir bauen, oder der Commit des Tags.

Komponente Version Lizenz Plattformen Rolle in Neverlag Quellcode
mpv (libmpv) 0.41.0 LGPL-2.1-or-later alle Wiedergabekern: Demuxing, Dekodierung, Takt, Untertitel, Render-API. Gebaut mit Neverlag-Änderungen (Patch unten). mpv (libmpv) 0.41.0 SHA-256 ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209
FFmpeg 8.0.3 LGPL-2.1-or-later alle Container, Protokolle, Decoder (libavformat, libavcodec, libavfilter, libswscale, libswresample, libavutil). Strikte LGPL-Konfiguration, keine GPL- oder Non-free-Teile. FFmpeg 8.0.3 SHA-256 6136812ea6d4e68bdba27e33c2a94382711cdf4f8602ffef056ff792bd6f9818
libplacebo 7.360.1 LGPL-2.1-or-later alle GPU-Videoverarbeitung für mpv (Farbmanagement, Skalierung, Tone-Mapping). Als Git-Klon mit Submodulen; OpenGL auf Mac, iPhone und iPad, CPU-Pfad auf Apple TV. libplacebo 7.360.1 Commit cee9b076f2c63104ccfd497fa79c39a867293ec4
glad Teil von libplacebo 2.0.8 MIT Mac, iPhone / iPad OpenGL-Funktionslader, im libplacebo-Build erzeugt. glad 2.0.8 Commit 73db193f853e2ee079bf3ca8a64aa2eaf6459043
fast_float Teil von libplacebo 8.2.2 MIT alle Header-only-Zahlenparser, von libplacebo verwendet. fast_float 8.2.2 Commit 97b54ca9e75f5303507699d27c6b4f4efe4641a1
libass 0.17.3 ISC alle Untertitel-Rendering (ASS/SSA, Textuntertitel). libass 0.17.3 SHA-256 eae425da50f0015c21f7b3a9c7262a910f0218af469e22e2931462fed3c50959
FreeType 2.13.3 FTL alle Schrift-Rasterung für Untertitel. FreeType 2.13.3 SHA-256 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289
FriBidi 1.0.16 LGPL-2.1-or-later alle Bidirektionaler Text (Arabisch, Hebräisch) in Untertiteln. FriBidi 1.0.16 SHA-256 1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c
HarfBuzz 10.1.0 MIT alle Text-Shaping für Untertitel. HarfBuzz 10.1.0 SHA-256 6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82
GRDB.swift 7.11.1 MIT alle SQLite-Zugriff für Katalog und Programmführer (Swift-Paket, nicht Teil des Medien-Frameworks). GRDB.swift 7.11.1

Wie die Bibliotheken eingebunden sind — und wie du sie austauschst

Die Bibliotheken (mpv, FFmpeg, libplacebo, FriBidi und die übrigen aus der Tabelle) sind zu einem Medien-Framework gebaut, das als eigene Datei im App-Bundle liegt (Ordner Frameworks) und beim Start der App geladen wird. Die App spricht es über die öffentliche libmpv-API an (client.h, render.h, stream_cb.h und das durch unseren Patch ergänzte render_cb.h) sowie über die unten genannten FFmpeg-Header.

Weil das Framework eine eigene, dynamisch geladene Datei ist, kannst du es durch einen eigenen Build ersetzen — eine andere mpv-Version, deine eigene FFmpeg-Konfiguration, ein gepatchtes libplacebo —, solange die Schnittstelle gleich bleibt (LGPL 2.1 §6 b). Baue es aus den Quellen und Flags dieser Seite, signiere es mit deinem eigenen Zertifikat und setze es an die Stelle des mitgelieferten Frameworks (Libmpv.framework — auf dem Mac liegt es zweimal: in der App, die libavformat für Aufnahmen nutzt, und im Wiedergabe-Dienst PlaybackService.xpc, der mpv ausführt; beide ersetzen). Auf dem Mac ist das alles; auf iPhone, iPad und Apple TV verlangt die Plattform zusätzlich, dass das ganze App-Bundle mit deinem eigenen Entwicklerzertifikat neu signiert wird — eine Regel von Apples Plattform, nicht dieser Lizenz.

Neverlag enthält nicht den mpv-Player, nur libmpv: keine Kommandozeile, kein Lua- oder JavaScript-Scripting, keine GPL-Teile. FFmpeg ist strikt LGPL konfiguriert (--disable-gpl --disable-nonfree --disable-version3), mpv mit -Dgpl=false.

Was Neverlag geändert hat

FFmpeg, libplacebo, libass, FreeType, FriBidi und HarfBuzz werden aus den unveränderten Release-Archiven gebaut. mpv bauen wir mit den folgenden Änderungen, veröffentlicht als ein Patch gegen das Release-Tarball:

  1. meson.build: osdep/utils-mac.c auf Apple-Plattformen auch ohne Cocoa mitkompilieren, weil die CoreAudio- und AudioUnit-Ausgaben dessen String-Hilfen brauchen. Alle Plattformen.
  2. meson.build: den VideoToolbox-GL-Hardwaredekodierpfad gegen einfaches OpenGL bauen lassen statt die Cocoa- oder iOS-GL-Backends zu verlangen. Nur Mac.
  3. Ein neues libmpv-Render-Backend «cb» (include/mpv/render_cb.h, video/out/libmpv_cb.c, Option -Dlibmpv-cb): Es reicht den dekodierten Frame ohne Kopie an die App weiter, statt ihn zu rendern. Auf dem Apple TV und auf iPhone / iPad eingeschaltet.

neverlag-mpv-changes.patch — Download: neverlag-mpv-changes.patch (mpv 0.41.0, Unified Diff, anwendbar mit patch -p1). Die Änderungen stehen wie die berührten Dateien unter LGPL 2.1 oder neuer.

Wie wir bauen

Alle Bibliotheken werden mit Apples clang aus Xcode für arm64 kompiliert (Mac zusätzlich x86_64), Deployment-Targets macOS 14.0, iOS 17.0, tvOS 17.0. TLS läuft über das System (SecureTransport); kein OpenSSL, GnuTLS oder Mbed TLS ist gelinkt. Die Flags unten sind die aus den Build-Skripten; mit einer Plattform markierte Zeilen gelten nur dort.

FFmpeg

./configure --enable-static --disable-shared --enable-pic --pkg-config-flags=--static
  --disable-autodetect --disable-gpl --disable-nonfree --disable-version3
  --enable-videotoolbox --enable-audiotoolbox
  --disable-doc --disable-programs --disable-avdevice
  --enable-protocol=file,http,https,tcp,tls,crypto,hls
  --enable-demuxer=mpegts,hls,mov,matroska,mpegps,flv
  --enable-decoder=h264,hevc,mpeg2video,mpeg4,vp9,av1
  --enable-decoder=aac,ac3,eac3,mp2,mp3,opus,flac
  --enable-zlib --enable-securetransport
# iPhone / iPad
  --enable-cross-compile --target-os=darwin --arch=arm64 --sysroot=<iPhoneOS SDK>
# Apple TV
  --enable-cross-compile --target-os=darwin --arch=arm64 --sysroot=<AppleTVOS SDK>
# Mac
  (x86_64 slice: --enable-cross-compile --target-os=darwin --arch=x86_64)

Keine GPL- oder Non-free-Teile (kein libx264, libx265, libfdk-aac). Der Build bricht ab, wenn config.h nicht CONFIG_GPL 0 enthält.

mpv (libmpv)

meson setup --default-library static --buildtype release
  -Dlibmpv=true -Dcplayer=false -Dgpl=false -Dtests=false
  -Dcocoa=disabled -Dswift-build=disabled -Dmacos-cocoa-cb=disabled
  -Dmacos-media-player=disabled -Dmacos-touchbar=disabled -Davfoundation=disabled
  -Dlua=disabled -Djavascript=disabled -Duchardet=disabled -Dzimg=disabled -Djpeg=disabled
  -Dlibarchive=disabled -Dlibbluray=disabled -Drubberband=disabled -Dvapoursynth=disabled
  -Dmanpage-build=disabled -Dhtml-build=disabled
# Mac
  -Dplain-gl=enabled -Dvideotoolbox-gl=enabled
# iPhone / iPad
  -Dlibmpv-cb=enabled -Dplain-gl=enabled -Dios-gl=enabled
  -Dvideotoolbox-gl=disabled -Dvideotoolbox-pl=disabled
  -Daudiounit=enabled -Dcoreaudio=disabled
# Apple TV
  -Dlibmpv-cb=enabled -Dgl=disabled -Dplain-gl=disabled -Dios-gl=disabled
  -Dvideotoolbox-gl=disabled -Dvideotoolbox-pl=disabled
  -Daudiounit=enabled -Dcoreaudio=disabled

Quellbaum = Release-Tarball + neverlag-mpv-changes.patch (siehe oben). -Dgpl=false wählt den LGPL-Build von mpv.

libplacebo

meson setup --default-library static --buildtype release
  -Dvulkan=disabled -Dd3d11=disabled -Dshaderc=disabled -Dglslang=disabled
  -Dlcms=disabled -Dlibdovi=disabled -Ddemos=false -Dtests=false
# Mac
  -Dopengl=enabled
# iPhone / iPad
  -Dopengl=enabled
# Apple TV
  -Dopengl=disabled

xxHash findet der Build nicht (pkg-config ist auf den Build-Prefix begrenzt); libplacebo nutzt sein eingebautes SipHash (Public Domain).

libass

./configure --disable-shared --enable-static --disable-fontconfig

FreeType

meson setup --default-library static --buildtype release
  -Dharfbuzz=disabled -Dbrotli=disabled -Dbzip2=disabled -Dpng=disabled -Dzlib=system -Dtests=disabled

FriBidi

meson setup --default-library static --buildtype release -Ddocs=false -Dtests=false -Dbin=false

HarfBuzz

meson setup --default-library static --buildtype release
  -Dfreetype=enabled -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dicu=disabled
  -Dtests=disabled -Ddocs=disabled -Dintrospection=disabled -Dutilities=disabled
# Mac
  -Dcoretext=enabled
# iPhone / iPad
  -Dcoretext=enabled
# Apple TV
  -Dcoretext=disabled

Libmpv.framework (packaging)

libtool -static -o libmpv-full.a libmpv.a libplacebo.a libass.a libharfbuzz.a libfribidi.a libfreetype.a
  libavformat.a libavcodec.a libavfilter.a libswscale.a libswresample.a libavutil.a
clang -dynamiclib -Wl,-all_load libmpv-full.a -install_name @rpath/Libmpv.framework/Libmpv
  -compatibility_version 1 -current_version 1 -Wl,-dead_strip
  -Wl,-exported_symbols_list Libmpv.exports   # _mpv_* _av* _sws_* _swr_* _swscale_* _swresample_*
  -lz -liconv -lc++ -framework VideoToolbox -framework AudioToolbox -framework CoreAudio
  -framework CoreMedia -framework CoreVideo -framework CoreText -framework CoreGraphics
  -framework Security -framework IOSurface -framework CoreFoundation
# Mac
  -arch arm64 -arch x86_64 -mmacosx-version-min=<macOS target> -framework OpenGL
  install_name @rpath/Libmpv.framework/Versions/A/Libmpv (versioned bundle)
# iPhone / iPad
  -target arm64-apple-ios<iOS target> -framework OpenGLES -framework AVFoundation -framework UIKit
# Apple TV
  -target arm64-apple-tvos<tvOS target> -framework AVFoundation -framework UIKit

Vendor/build-scripts/make-framework.sh: Die statischen Archive werden je Plattform zu einer dynamischen Bibliothek gelinkt (Mach-O dylib, install name @rpath/Libmpv.framework/…), mit Headern, Modulmap (Module Libmpv und Libmpv.CFFmpeg) und Info.plist als Libmpv.framework verpackt und zu Libmpv.xcframework zusammengesetzt. Xcode bettet es ins App-Bundle ein (Frameworks/) und signiert es. Exportiert wird nur die öffentliche C-API.

Schriftliches Angebot (Quellcode)

Für mindestens drei Jahre ab dem Tag, an dem du deine Kopie von Neverlag erhalten hast, gibt die axiena AG jedem Dritten auf Anfrage den vollständigen, maschinenlesbaren Quellcode der LGPL-lizenzierten Bibliotheken in genau den Versionen, die die App enthält — einschliesslich aller Neverlag-Änderungen (Patch oben) sowie der Skripte und Konfiguration, mit denen sie gebaut werden — gegen höchstens die Kosten, die uns diese Weitergabe verursacht. Dieses Angebot erfolgt nach Ziffer 4 und Ziffer 6 c der GNU Lesser General Public License 2.1.

Schreib an support@neverlag.app oder info@axiena.ch und nenne App-Version und Plattform (Einstellungen → Über Neverlag). Du erhältst Download-Links zu den Archiven; wenn du einen Datenträger bevorzugst, schicken wir ihn zum Selbstkostenpreis.

axiena AG
Einsiedlerstrasse 535
8810 Horgen, Schweiz
support@neverlag.app · info@axiena.ch

Weiteres Material Dritter

libass (ISC), FreeType (FreeType License), HarfBuzz (MIT), glad (MIT), fast_float (MIT) und GRDB.swift (MIT) verlangen, dass ihre Lizenz- und Urheberrechtshinweise mitgeliefert werden; sie stehen in der App unter Open-Source-Lizenzen.

Die Demo-Kanäle spielen Ausschnitte und Trailer der Blender Open Movies, © Blender Foundation, lizenziert unter Creative Commons Attribution (CC BY 2.5 und 3.0), für den Demo-Modus neu kodiert und teilweise gekürzt.

← Zur Startseite