Files
pmomusic/doc/Type_devices.md

89 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

2025-09-06 17:45:28 +02:00
Voici un tableau complet des devices et services UPnP/DLNA pertinents pour un **serveur audio**, prêt à structurer dans ton code:
| Device type | UPnP class | Rôle | Services indispensables | Description |
| ------------------------------ | --------------------------------------------- | -------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| MediaServer (MS) | `urn:schemas-upnp-org:device:MediaServer:1` | Fournit des fichiers audio/vidéo | `ContentDirectory`, `ConnectionManager` | Permet aux clients de parcourir et lire le contenu stocké sur le serveur |
| MediaRenderer (MR) | `urn:schemas-upnp-org:device:MediaRenderer:1` | Reçoit et lit laudio | `RenderingControl`, `AVTransport`, `ConnectionManager` | Lecteur audio DLNA: contrôle de volume, transport (play/pause/stop), gestion des connexions |
| Digital Media Controller (DMC) | Pas de device standard, souvent logiciel | Orchestration entre MS et MR | Contrôle MR via `AVTransport` et `RenderingControl` | Contrôle à distance la lecture et le flux audio sur un ou plusieurs MR |
| Playlist Server (optionnel) | Dépend du vendor | Gère playlists | Souvent custom | Fournit des listes de lecture pour les MR, parfois intégré au MS |
| Remote UI / Control Point | `urn:schemas-upnp-org:device:ControlPoint:1` | Interface de contrôle | Aucun service UPnP standard | Applications ou UI qui pilotent la lecture sur MR/MS |
---
### Services clés pour un **MediaRenderer audio**
| Service | SCPD / Actions principales | Description |
| --------------------- | ---------------------------------------------------- | --------------------------------------------------------------- |
| `RenderingControl:1` | `SetVolume`, `GetVolume`, `SetMute`, `GetMute` | Contrôle du volume et mute |
| `AVTransport:1` | `SetAVTransportURI`, `Play`, `Pause`, `Stop`, `Seek` | Commandes de lecture audio/vidéo |
| `ConnectionManager:1` | `GetProtocolInfo`, `PrepareForConnection` | Informations sur les protocoles supportés et gestion de session |
### Résumé pour un **MediaServer audio minimal**
| Service | Actions clés | Notes |
| --------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------- |
| `ContentDirectory:1` | `Browse`, `Search`, `GetSystemUpdateID` | Obligatoire pour parcourir le contenu audio |
| `ConnectionManager:1` | `GetProtocolInfo`, `PrepareForConnection`, `ConnectionComplete` | Obligatoire pour que les MediaRenderers puissent lire le contenu |
| Autres | optionnels | Selon fonctionnalités avancées (playlists, enregistrement, etc.) |
---
### Bonnes pratiques
1. **UDN unique et persistant** pour chaque device.
2. **Hierarchie de device**: MediaServer et MediaRenderer peuvent être enfants ou racines selon le schéma Mermaid que tu utilises.
3. **URLs SCPD et services** doivent suivre le schéma:
```
/device/<device-type>/<udn>/desc.xml
/device/<device-type>/<udn>/service/<service>.xml
```
4. Si ton serveur est audio-only, **MediaRenderer est suffisant** pour exposer linterface de lecture et contrôle, MediaServer si tu fournis du contenu.
Pour un **MediaServer (MS)** UPnP/DLNA, les services standard à implémenter sont bien définis dans les specs **UPnP AV** et **DLNA Guidelines**:
---
### 1. **ContentDirectory:1**
* **Rôle**: exposer le contenu multimédia (audio, vidéo, images).
* **Actions principales** :
* `Browse` : lister les objets (dossiers/fichiers) dans la bibliothèque.
* `Search` : rechercher des objets selon des critères.
* `GetSystemUpdateID` : pour détecter les modifications dans la bibliothèque.
* `GetSortCapabilities` / `GetSearchCapabilities` : métadonnées supportées.
* **URL SCPD** : `/device/<devicetype>/<udn>/service/ContentDirectory.xml`
---
### 2. **ConnectionManager:1**
* **Rôle**: gérer les connexions et informer sur les protocoles supportés.
* **Actions principales** :
* `GetProtocolInfo` : retourne les protocoles de lecture supportés (DLNA profile, MIME type).
* `PrepareForConnection` / `ConnectionComplete` : notification de début/fin de connexion entre MS et MR.
* `GetCurrentConnectionIDs` / `GetCurrentConnectionInfo` : état des connexions.
* **URL SCPD** : `/device/<devicetype>/<udn>/service/ConnectionManager.xml`
---
### 3. **Optional / Extensions**
Certains MediaServer ajoutent des services supplémentaires:
* `ScheduledRecording` : pour enregistrer du contenu.
* `ImportResource` : pour ajouter dynamiquement des fichiers.
* Services vendor-specific pour métadonnées enrichies ou playlists.
* Chaque **MediaServer doit avoir un UDN persistant**.
* Les services doivent renvoyer des **protocolInfo** corrects pour le DLNA audio (ex: `http-get:*:audio/mpeg:*`).
---