Ça fait un moment que j’avais ce sujet dans mes brouillons, et la dernière version de VLC permet enfin quelque chose de correct : il est possible de lire un DCP avec le logiciel open source.
Un DCP, c’est quoi ? Le DCP (Digital Cinema Package) est le standard utilisé dans le monde du cinéma pour diffuser un film. Quand vous allez dans une salle obscure pour regarder un film, il y a 99 % de chances (en 2018) que ce soit un DCP. La lecture de DCP sur un ordinateur n’est pas quelque chose de trivial pour plusieurs raisons. D’abord, les DCP prennent de la place. Beaucoup de place. Dans un DCP, la vidéo est généralement encodée en JPEG2000, image par image, à un débit maximal de 250 Mb/s (~31 Mo/s) et l’audio est en PCM sur 24 bits, en 48 ou 96 kHz (~1 Mb/s par canal). Ensuite, le décodage du JPEG2000 demande pas mal de puissance. Les définitions classiques en « 2K » sont 1998 x 1080, 2048 x 1080 ou 2048 x 858 et 3996 x 2160, 4096 x 1716 ou 4096 x 2160 en 4K. Plus concrètement, l’appareil doit décoder 24 images (ou plus, 48 possibles en 3D ou en HFR) en 1 seconde, avec un codec notoirement lourd et rarement utilisé (donc sans accélération dans nos puces). A noter que le choix du JPEG2000 est important : en cas d’artefacts (et vu le débit, il y en a assez peu), on ne se retrouve pas avec des macroblocs comme en JPEG ou MPEG.
Petit aparté sur le JPEG2000 : ce successeur du JPEG annoncé en 2000 devait apporter une meilleure compression avec des artefacts moins visibles, mais il n’a jamais réussi à trouver sa place. Beaucoup de logiciels le supportent (macOS le gère parfaitement) mais aucun appareil photo (à ma connaissance) ne prend en charge le JPEG2000 nativement. En dehors de quelques caméras de surveillance, le JPEG2000 reste donc très rare… sauf dans le monde du cinéma. Si certains l’attendaient comme le messie, il souffre de deux problèmes : c’est assez lourd à manipuler (lecture et encodage) et le gain par rapport à du JPEG classique reste assez léger. Dans un appareil photo qui peut de toute façon déjà stocker des centaines ou des milliers de photos, le gain par rapport au JPEG ne se justifie pas au vu de la complexité, et le RAW le remplace bien pour les questions de qualité.
Lire et trouver des DCP
Trouver des lecteurs capables de prendre en charge le DCP en payant n’est pas très compliqué. Mais en open source (ou gratuit), ça reste assez rare. Depuis quelques version, VLC le propose et j’ai donc essayé. Première étape, avant même de passer à VLC, trouver des DCP. On trouve assez facilement des trailers sur le Net, dans les sections dédiées aux exploitants chez les distributeurs (une liste existe). J’ai pris des trucs chez Gaumont pour tester. Attention, ça peut être (très) gros, genre 2 ou 3 Go pour un fichier de quelques minutes. La majorité des DCP utilise du JPEG2000, certains (rares) utilisent encore la vieille norme MPEG2. En effet, comme pour les Blu-ray, les premiers DCP travaillaient en MPEG2 en haute définition (1080p, du coup) mais c’est visiblement très rare. Forcément, la qualité ne vaut pas le JPEG2000 mais ça se décode facilement avec n’importe quel PC un peu moderne. Un DCP est un ensemble de fichiers qui contient du XML (la description des données), de la vidéo et de l’audio dans un conteneur XMF et des fichiers pour les sous-titres (notamment).
Avant de parler de VLC, je vais évoquer DCP-o-Matic. Ce logiciel open source de qualité permet de créer des fichiers DCP depuis n’importe quelle source ou presque et il existe un logiciel de lecture (DCP-o-Matic Player). Je l’évoque rapidement parce qu’il a un (gros) problème : il n’utilise qu’un seul coeur. Même avec un Core i7 Kaby Lake (MacBook Pro 2017), du coup, impossible de lire un DCP de façon fluide. Même en réduisant fortement la qualité (1/4 de définition, donc un rendu en 51 x 224 pour du Scope 2K), ce n’est vraiment pas fluide. Iina peut aussi lire les DCP, mais comme VLC, il n’arrive pas à le faire en temps réel sur mon CPU.
Avec VLC, donc. Par défaut, VLC va essayer de lire le DCP en définition native. Sur mon MacBook Pro et ses quatre coeurs, c’est impossible. On a une image de temps en temps, l’audio, et c’est tout. Et au prix de l’utilisation des quatre coeurs et de l’Hyper-Threading. Sur un Mac Pro ou un iMac Pro gavé de coeurs, ça passe peut-être, mais sur le MacBook Pro, non. La solution passe par la ligne de commande pour réduire la qualité. Techniquement, VLC le propose au moins depuis la version 2.2, mais c’était notoirement buggé, la version 3.0 sortie récemment amène un support très correct.
/Applications/VLC.app/Contents/MacOS/VLC -vv --avcodec-options="{lowres=1}" dcp:///LINK/TO/DCP/FOLDER/
La valeur qui suit lowres
indique la définition de l’image. 0 pour la définition native, 1 pour une division par 2, 2 pour une division par quatre. Avec Le Core i7 7700HQ de mon Mac, la valeur 0 demande trop de ressources, la valeur 1 passe souvent mais pas toujours. Avec un décodage en 1 024 x 429 (en gros la définition d’un DVD…), le processeur utilise tous ses coeurs et un autre programme qui tourne ou le Turbo qui arrive ses limites font vite perdre des images. Avec la valeur 2, c’est forcément fluide, mais la qualité est extrêmement dégradée. Ici, quelques captures d’une bande annonce en format Flat.
Dans les autres trucs à savoir, on peut noter le fait que les films sont parfois livrés sur des disques durs et que certains serveurs utilisent des racks pour les disques comme dans les années nonante (et ce n’est pas donné), même si la distribution passe a priori de plus en plus par des téléchargements (fibre, satellite, etc.). La gestion des DRM et des autorisations est liée à un système de clés (KDM). VLC semble gérer ça mais je ne suis pas allé plus loin : je n’ai pas accès à des fichiers liés à des clés et aucune légitimité pour en diffuser.
merci, je vais refaire des essais avec VLC …
Je pense (pas sûr) que c’est le codec JPEG2000 de VLC (qui doit être open source?) qui n’est pas optimisé
Avec des lecteur DCP payant, ca passe « mieux »
A retester/confirmer mais la dernière version Beta de Davinci Resolve 15 (Gratuite) intègre un nouveau codec JPEG2000 Kakadu qui lit les DCP 4K sur ma machine (MacOS 6cœurs HT)….
Cordialement
P.S « sans dans le monde du cinéma » ➧ « sauf dans le monde du cinéma »
Hello, merci pour ces explications.
Ce serait intéressant de connaître les configs utilisés par les cinémas pour afficher ces médias.
Il me semble que Stanley Kubrick détestait les DVD parce qu’ils étaient incapables d’afficher un fond coloré avec un léger dégradé sans artefact. Avec le JPEG2000, il aurait certainement détesté le DCP ;-)
Les cinémas, ils utilisent généralement des serveurs dédiés, capables de déchiffrer les trucs, et avec des lecteurs mieux optimisés (et du hardware).
Après, le JPEG2000 a l’avantage de pas avoir les mêmes artefacts que le JPEG ou le MPEG2 (et vu les débits, y en a pas)
Merci ! Je vais tester ça.
Pour le transport des DCP, j’ai déjà vu des LaCie Rugged arriver chez l’exploitant par coursier dans une valise peli.
@noar Le DVD et le DCP ne sont pas vraiment comparables. Il n’y a pas d’artefacts dans les DCP en JPEG2000 (sinon, l’expérience cinéma serait pas terrible…) et on est quand même dans d’autres standards, notamment au niveau de l’espace colorimétrique (DCI-P3 au cinéma, contre BT601 pour le DVD) et bien d’autres choses…
Salut, je confirme que DaVinci Resolve (gratuit sur mac et pc) est capable de lire les DCP
Bonjour,
J’ai développé un lecteur de DCP gratuit et open source, fonctionnant pour l’instant sous Windows 64 bits sur machine équipée de carte GPU NVidia avec architecture Pascal ou plus récente. Il fonctionne pour des images de type 2k ou 4k, avec son 5.1 ou stéréo, non crypté. Le 7.1 est downmixé en 5.1. Il peut permettre de vérifier un DCP avant un test en salle. C’est un logiciel gratuit en version beta, donc destiné aux indépendants (geek) qui ne peuvent se permettre d’acheter un logiciel plus évolué.
Il est disponible avec les sources sur
https://github.com/Karleener/FreeDcpPlayer
La navigation est essentiellement au clavier : barre d’espace pour lecture/pause/ Flèches pour avance/recul. Mode pas à pas avec les flèches hautes et basses. Sortie par touche echap (plusieurs fois).
J’ai fait un tuto d’utilisation de Free Dcp Player
https://www.youtube.com/watch?v=Cni9rMPJAGU
Il peut être utilisé en ligne de commandes donc en batch pour enchaîner la lecture de plusieurs DCP successifs.
Il est compatible avec Windows 10 et 11 et Linux Ubuntu.
N’hésitez pas à faire des retours, mêmes positifs !
Merci. Je vais essayer de regarder ça, faut que je vérifie si j’ai une carte adaptée dans mes cartons :D