Open source dans Neverlag

Mise à jour : 26 septembre 2026

Neverlag lit la vidéo avec la pile mpv : mpv, FFmpeg, libplacebo et les bibliothèques de sous-titres qui les entourent. La plus grande partie est publiée sous la GNU Lesser General Public License (LGPL) 2.1 ou ultérieure. Cette page est l’avis que la LGPL exige : quels composants se trouvent dans l’app, dans quelles versions exactes, où se trouve leur code source, ce que nous avons modifié, comment nous compilons, comment tu peux remplacer la bibliothèque — et notre offre écrite de fournir le code source.

Neverlag lui-même — l’app, son interface et tout ce qui est en dehors du framework média — n’est pas open source. Les bibliothèques listées ici le sont et restent sous leurs propres licences. Les textes des licences se trouvent dans l’app sous Réglages → À propos de Neverlag → Mentions légales → Licences open source, tels quels, sans modification par rapport aux paquets sources.

Composants

Versions telles que fixées dans la compilation (Vendor/build-scripts/versions.env dans le dépôt Neverlag). Chaque lien source pointe exactement vers cette version ; la somme de contrôle est le SHA-256 de l’archive de la version à partir de laquelle nous compilons, ou le commit du tag.

Composant Version Licence Plateformes Rôle dans Neverlag Code source
mpv (libmpv) 0.41.0 LGPL-2.1-or-later toutes Cœur de lecture : démultiplexage, décodage, cadence, sous-titres, API de rendu. Compilé avec les modifications Neverlag (patch ci-dessous). mpv (libmpv) 0.41.0 SHA-256 ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209
FFmpeg 8.0.3 LGPL-2.1-or-later toutes Conteneurs, protocoles, décodeurs (libavformat, libavcodec, libavfilter, libswscale, libswresample, libavutil). Configuration strictement LGPL, sans parties GPL ni non libres. FFmpeg 8.0.3 SHA-256 6136812ea6d4e68bdba27e33c2a94382711cdf4f8602ffef056ff792bd6f9818
libplacebo 7.360.1 LGPL-2.1-or-later toutes Traitement vidéo sur GPU pour mpv (gestion des couleurs, mise à l’échelle, tone mapping). Clone Git avec sous-modules ; OpenGL sur Mac, iPhone et iPad, voie CPU sur Apple TV. libplacebo 7.360.1 Commit cee9b076f2c63104ccfd497fa79c39a867293ec4
glad partie de libplacebo 2.0.8 MIT Mac, iPhone / iPad Chargeur de fonctions OpenGL, généré lors de la compilation de libplacebo. glad 2.0.8 Commit 73db193f853e2ee079bf3ca8a64aa2eaf6459043
fast_float partie de libplacebo 8.2.2 MIT toutes Analyseur de nombres en en-têtes seuls, utilisé par libplacebo. fast_float 8.2.2 Commit 97b54ca9e75f5303507699d27c6b4f4efe4641a1
libass 0.17.3 ISC toutes Rendu des sous-titres (ASS/SSA, sous-titres texte). libass 0.17.3 SHA-256 eae425da50f0015c21f7b3a9c7262a910f0218af469e22e2931462fed3c50959
FreeType 2.13.3 FTL toutes Rastérisation des polices pour les sous-titres. FreeType 2.13.3 SHA-256 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289
FriBidi 1.0.16 LGPL-2.1-or-later toutes Texte bidirectionnel (arabe, hébreu) dans les sous-titres. FriBidi 1.0.16 SHA-256 1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c
HarfBuzz 10.1.0 MIT toutes Mise en forme du texte (shaping) pour les sous-titres. HarfBuzz 10.1.0 SHA-256 6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82
GRDB.swift 7.11.1 MIT toutes Accès SQLite pour le catalogue local et le guide des programmes (paquet Swift, hors du framework média). GRDB.swift 7.11.1

Comment les bibliothèques sont liées — et comment les remplacer

Les bibliothèques (mpv, FFmpeg, libplacebo, FriBidi et les autres du tableau) sont compilées en un seul framework média, livré comme fichier séparé dans le bundle de l’app (dossier Frameworks) et chargé au démarrage de l’app. L’app lui parle par l’API publique libmpv (client.h, render.h, stream_cb.h et le render_cb.h ajouté par notre patch) et par les en-têtes FFmpeg listés plus bas.

Parce que le framework est un fichier séparé, chargé dynamiquement, tu peux le remplacer par ta propre compilation — une autre version de mpv, ta propre configuration FFmpeg, un libplacebo patché — tant que l’interface reste la même (LGPL 2.1 §6 b). Compile-le à partir des sources et des options de cette page, signe-le avec ton propre certificat et mets-le à la place du framework livré (Libmpv.framework — sur Mac il est présent deux fois : dans l’app, qui utilise libavformat pour les enregistrements, et dans le service de lecture PlaybackService.xpc, qui exécute mpv ; remplace les deux). Sur Mac, c’est tout ; sur iPhone, iPad et Apple TV, la plateforme exige en plus que tout le bundle de l’app soit re-signé avec ton propre certificat de développeur — une règle de la plateforme d’Apple, pas de cette licence.

Neverlag ne contient pas le lecteur mpv, seulement libmpv : pas de ligne de commande, pas de scripts Lua ou JavaScript, pas de parties GPL. FFmpeg est configuré strictement LGPL (--disable-gpl --disable-nonfree --disable-version3), mpv avec -Dgpl=false.

Ce que Neverlag a modifié

FFmpeg, libplacebo, libass, FreeType, FriBidi et HarfBuzz sont compilés à partir des archives de version non modifiées. mpv est compilé avec les modifications suivantes, publiées sous forme d’un seul patch contre l’archive de la version :

  1. meson.build : compiler osdep/utils-mac.c sur les plateformes Apple même sans Cocoa, parce que les sorties CoreAudio et AudioUnit utilisent ses fonctions de chaînes. Toutes les plateformes.
  2. meson.build : permettre au chemin de décodage matériel VideoToolbox-GL de se compiler contre OpenGL simple au lieu d’exiger les back-ends GL Cocoa ou iOS. Mac seulement.
  3. Un nouveau back-end de rendu libmpv « cb » (include/mpv/render_cb.h, video/out/libmpv_cb.c, option -Dlibmpv-cb) : il transmet l’image décodée à l’app sans la copier, au lieu de la rendre. Activé sur Apple TV et sur iPhone / iPad.

neverlag-mpv-changes.patch — Téléchargement : neverlag-mpv-changes.patch (mpv 0.41.0, diff unifié, s’applique avec patch -p1). Les modifications sont sous LGPL 2.1 ou ultérieure, comme les fichiers qu’elles touchent.

Comment nous compilons

Toutes les bibliothèques sont compilées avec le clang d’Apple fourni par Xcode pour arm64 (Mac en plus x86_64), cibles de déploiement macOS 14.0, iOS 17.0, tvOS 17.0. Le TLS passe par le système (SecureTransport) ; aucun OpenSSL, GnuTLS ou Mbed TLS n’est lié. Les options ci-dessous sont celles des scripts de compilation ; les lignes marquées d’une plateforme ne valent que pour elle.

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)

Aucune partie GPL ni non libre (pas de libx264, libx265, libfdk-aac). La compilation s’arrête si config.h ne contient pas CONFIG_GPL 0.

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

Arborescence source = archive de la version + neverlag-mpv-changes.patch (voir plus haut). -Dgpl=false sélectionne la compilation LGPL de 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

La compilation ne trouve pas xxHash (pkg-config est limité au préfixe de compilation) ; libplacebo se rabat sur son SipHash intégré (domaine public).

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 : les archives statiques sont liées, par plateforme, en une bibliothèque dynamique (dylib Mach-O, install name @rpath/Libmpv.framework/…), empaquetée avec les en-têtes, une module map (modules Libmpv et Libmpv.CFFmpeg) et Info.plist en Libmpv.framework, puis assemblée en Libmpv.xcframework. Xcode l’intègre dans le bundle de l’app (Frameworks/) et la signe. Seule l’API C publique est exportée.

Offre écrite (code source)

Pendant au moins trois ans à compter du jour où tu as reçu ta copie de Neverlag, axiena AG remet à tout tiers qui en fait la demande le code source complet, lisible par machine, des bibliothèques sous licence LGPL dans exactement les versions que l’app contient — y compris toutes les modifications Neverlag (le patch ci-dessus) ainsi que les scripts et la configuration servant à les compiler — pour un montant n’excédant pas le coût de cette remise. Cette offre est faite en vertu des articles 4 et 6 c de la GNU Lesser General Public License 2.1.

Écris à support@neverlag.app ou info@axiena.ch en indiquant la version de l’app et la plateforme (Réglages → À propos de Neverlag). Tu recevras des liens de téléchargement vers les archives ; si tu préfères un support physique, nous t’en envoyons un au prix coûtant.

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

Autre matériel de tiers

libass (ISC), FreeType (FreeType License), HarfBuzz (MIT), glad (MIT), fast_float (MIT) et GRDB.swift (MIT) exigent que leurs mentions de licence et de droit d’auteur soient reproduites ; elles se trouvent dans l’app sous Licences open source.

Les chaînes de démonstration diffusent des extraits et des bandes-annonces des Blender Open Movies, © Blender Foundation, sous licence Creative Commons Attribution (CC BY 2.5 et 3.0), réencodés et en partie raccourcis pour le mode démo.

← Retour à la page d’accueil