✦ Plugin Emby · Gratuit · Open Source ✦ Emby Plugin · Free · Open Source

Vos serveurs médias,
enfin réunis.
Dans un seul Emby.
Your media servers,
finally unified.
In a single Emby.

VirtualLib agrège toutes vos bibliothèques distantes — Emby, Jellyfin, Plex — comme si elles étaient locales.
Pas de copie. Proxy transparent. Sync automatique.
VirtualLib aggregates all your remote libraries — Emby, Jellyfin, Plex — as if they were local.
No file copying. Transparent proxy. Automatic sync.

0koFichier média copiéMedia files copied
3+Plateformes supportéesSupported platforms
Serveurs configurablesConfigurable servers
100%Gratuit & open sourceFree & open source
Le problèmeThe problem

Ça vous parle ? Sound familiar?

Si vous avez plusieurs serveurs à la maison, vous connaissez la galère. If you have multiple servers at home, you know the struggle.

😤
Jongler entre plusieurs interfaces Juggling multiple interfaces

Film sur le serveur du bureau, série sur le Raspberry du salon, documentaires chez les parents. Aucun endroit pour tout voir d'un coup. Movie on the office server, series on the living room Pi, documentaries at your parents' place. Nowhere to see everything at once.

💾
Copier les fichiers = impensable Copying files = unthinkable

Dupliquer 2 To de films juste pour centraliser ? Aucun sens. Espace gâché, synchronisation impossible, double bande passante. Duplicate 2TB of movies just to centralize? Makes no sense. Wasted space, impossible sync, double bandwidth.

🤯
La famille ne comprend pas The family doesn't get it

« C'est sur quel Emby ce soir ? » Expliquer l'infra à votre famille, c'est perdu d'avance. Il faut que ça soit transparent. "Which Emby is it on tonight?" Explaining your infrastructure to your family is a lost cause. It has to be transparent.

VirtualLib résout tout ça en un plugin. VirtualLib solves all of this in one plugin.

Une seule interface Emby. Tout votre contenu. Partout. Automatiquement. One Emby interface. All your content. Everywhere. Automatically.

Comment ça marcheHow it works

Simple comme bonjour Simple as that

Six étapes, une fois. Ensuite c'est automatique pour toujours. Six steps, once. Then automatic forever.

01
🔌
Installez le pluginInstall the plugin

Copiez VirtualLib.dll dans le dossier plugins d'Emby A. Redémarrez. C'est tout. Copy VirtualLib.dll into Emby A's plugins folder. Restart. That's it.

5 minutesminutes
02
🔗
Ajoutez vos serveursAdd your servers

Dashboard → VirtualLib → Paramètres. URL + clé API de chaque source. Test de connexion en un clic. Dashboard → VirtualLib → Settings. URL + API key per source. Connection test in one click.

Emby / Jellyfin / Plex
03
📚
Choisissez vos bibliothèquesChoose your libraries

La liste des bibliothèques disponibles s'affiche. Cochez celles à importer. Films ? Séries ? Les deux ? Votre choix. The list of available libraries appears. Check the ones to import. Movies? Series? Both? Your call.

Granularité par bibliothèquePer-library granularity
04
VirtualLib synchroniseVirtualLib syncs

Génère des fichiers .strm (~100 octets chacun) et .nfo localement. Aucun média n'est copié. Generates .strm files (~100 bytes each) and .nfo files locally. No media is copied.

Zéro duplicationZero duplication
05
🏠
Ajoutez dans EmbyAdd to Emby

Pointez une bibliothèque Emby vers le dossier généré. Emby indexe tout comme si c'était local. Point an Emby library at the generated folder. Emby indexes everything as if it were local.

Natif dans EmbyNative in Emby
06
▶️
Appuyez sur PlayPress Play

Le ProxyController pipe le stream. Seek natif, transcodage à la volée, clés API jamais exposées. 100% transparent. The ProxyController pipes the stream. Native seek, on-the-fly transcoding, API keys never exposed. 100% transparent.

Proxy Range-aware
FonctionnalitésFeatures

Tout y est.
Sans compromis.
Everything's there.
No compromises.

VirtualLib ne fait pas de concessions sur ce qui compte vraiment. VirtualLib makes no concessions on what truly matters.

🎭
Bibliothèques virtuelles nativesNative virtual libraries

Vos médias distants apparaissent comme des bibliothèques locales. Navigation, filtres, recherche — exactement comme si les fichiers étaient chez vous. Your remote media appears as local libraries. Browsing, filters, search — exactly as if the files were on your server.

Expérience identiqueIdentical experience
🔄
Proxy transparent + Seek natifTransparent proxy + Native seek

Le ProxyController forwarde les Range headers HTTP. Seek au milieu d'un film = instantané. Emby A peut transcoder avant d'envoyer au client. The ProxyController forwards HTTP Range headers. Seeking mid-movie = instant. Emby A can transcode before sending to the client.

206 Partial Content
🔒
Vos clés API restent secrètesYour API keys stay secret

Les tokens d'accès aux serveurs sources ne sont jamais dans les .strm, jamais exposés au client. Le proxy valide chaque requête contre l'index local. Source server access tokens are never in .strm files, never exposed to clients. The proxy validates each request against the local index.

Aucun proxy ouvertNo open proxy
📡
Sync automatique & deltaAutomatic & delta sync

Nouveau film ajouté sur le Serveur B ? Dans l'intervalle configuré (défaut 6h), il apparaît automatiquement dans Emby A. Sans rien faire. New movie added on Server B? Within the configured interval (default 6h), it automatically appears in Emby A. No action needed.

Détection ajouts/suppressionsAddition/removal detection
🗂️
Métadonnées sans re-scrapingMetadata without re-scraping

Les .nfo embarquent titre, synopsis, rating, genres, IDs IMDb/TMDb. Emby indexe directement sans appeler de scrapers externes. The .nfo files embed title, synopsis, rating, genres, IMDb/TMDb IDs. Emby indexes directly without calling external scrapers.

NFO Kodi/Emby
🌐
Multi-serveurs illimitéUnlimited multi-server

Ajoutez autant de serveurs que vous voulez. Chaque connecteur est indépendant avec son intervalle de sync et sa sélection de bibliothèques. Add as many servers as you want. Each connector is independent with its own sync interval and library selection.

N serveurs simultanésN concurrent servers
ArchitectureArchitecture

Un hub. Des flux.
Une expérience unifiée.
One hub. Many streams.
One unified experience.

Chaque serveur source peut alimenter plusieurs clients simultanément. Un même client peut streamer depuis plusieurs sources. VirtualLib orchestre tout, de façon transparente. Each source server can feed multiple clients simultaneously. A single client can stream from multiple sources. VirtualLib orchestrates it all, transparently.

ClientsClients
📱 Mobile
📺 TV App
💻 Browser
🎮 Player
🏠 Emby A VirtualLib Proxy · Sync
SourcesSources
🖥️ Emby B
🟠 Plex
🐟 Jellyfin
🖥️ Emby C
Flux média actifsActive media streams
Emby B → MobileEmby B → Mobile
Emby B → TV (même source)Emby B → TV (same source)
Plex → Browser
Jellyfin → TV (2 sources → même client)Jellyfin → TV (2 sources → same client)
Emby C → Player

Chaque point coloré = un flux média indépendant. Le hub proxy et transcodes à la volée. Each colored dot = one independent media stream. The hub proxies and transcodes on the fly.

CompatibilitéCompatibility

Fonctionne avec
les trois grands
Works with
the big three

Une interface commune, trois connecteurs. Même expérience quelle que soit la source. One common interface, three connectors. Same experience regardless of source.

Emby
Supporté — Phase 1Supported — Phase 1

API REST native, pagination gérée, artwork, stream vidéo. Authentification par clé API ou token MediaBrowser. Native REST API, pagination handled, artwork, video stream. Authentication via API key or MediaBrowser token.

Jellyfin
⏳ Phase 3

API compatible avec Emby. Le JellyfinConnector sera un dérivé direct d'EmbyConnector avec ajustements mineurs. Emby-compatible API. JellyfinConnector will be a direct derivative of EmbyConnector with minor adjustments.

Plex
Supporté — Phase 3Supported — Phase 3

API XML, auth directe ou via plex.tv (relay / plex.direct). Support 2FA, token par serveur, timeout relay 120 s. XML API, direct auth or via plex.tv (relay / plex.direct). 2FA support, per-server token, 120s relay timeout.

Roadmap

Le plan en 3 actes The 3-act plan

Un chemin progressif, du MVP fonctionnel au hub média universel. Issues suivies en direct depuis GitHub. A progressive path, from functional MVP to universal media hub. Issues tracked live from GitHub.

DémarrerGet started

Prêt en 5 minutes.
Gratuit pour toujours.
Ready in 5 minutes.
Free forever.

Pas d'inscription. Pas de serveur cloud. Vos données restent chez vous. No sign-up. No cloud server. Your data stays with you.

01

Télécharger VirtualLib.dllDownload VirtualLib.dll

Depuis la page Releases du dépôt GitHub. From the Releases page of the GitHub repository.

github.com/CCoupel/Emby_VirtualLib/releases
02

Copier dans le dossier plugins EmbyCopy to the Emby plugins folder

Puis redémarrez votre serveur Emby.Then restart your Emby server.

{EmbyData}/plugins/VirtualLib/VirtualLib.dll
03

Configurer depuis le Dashboard EmbyConfigure from the Emby Dashboard

Dashboard → Plugins → VirtualLib → Paramètres → Ajouter un serveur.Dashboard → Plugins → VirtualLib → Settings → Add a server.

04

Synchroniser & profiterSync & enjoy

Cliquez "Synchroniser maintenant" → Ajoutez le dossier généré comme bibliothèque dans Emby.Click "Sync now" → Add the generated folder as a library in Emby.

/media/virtual-libraries/ServeurB_Films/
Changelog

Historique des versions Release history

Toutes les versions publiées, directement depuis GitHub Releases. All published versions, directly from GitHub Releases.