URL: https://linuxfr.org/news/integrer-des-videos-dans-des-fichiers-pdf
Title: Intégrer des vidéos dans des fichiers PDF
Authors: gouttegd
Florent Zara et rootix
Date: 2013年11月12日T12:55:07+01:00
License: CC By-SA
Tags: latex, richard_stallman et libreoffice
Score: 39
Comme vous êtes [demandeurs de howto/documentation](http://linuxfr.org/sondages/quel-contenu-aimeriez-vous-voir-plus-souvent-sur-linuxfr-org), on pense à vous. Après l'[invitation de RMS](http://linuxfr.org/news/how-to-inviter-richard-stallman-a-une-conference), [héberger son propre courriel](http://linuxfr.org/news/heberger-son-courriel), voici l'intégration de vidéos dans un fichier PDF.
Lorsque je présente mes travaux lors d’un meeting ou d’un séminaire, j’ai parfois (souvent, en fait) besoin de présenter des vidéos. N’étant pas grand fan de LibreOffice Impress (encore moins, tu t’en doutes, de PowerPoint), plutôt adepte de _Beamer_, je me suis penché sur l’art et la manière d’inclure une vidéo dans un PDF. Afin que ça ne se perde pas, je te confie le résultat de cette inclinaison.
NdM : merci à gouttegd pour son journal.
----
[Journal à l'origine de la dépêche](http://linuxfr.org/users/gouttegd/journaux/integrer-des-videos-dans-des-fichiers-pdf)
----
# Le format PDF et les vidéos #
Il existe trois façons d’intégrer une vidéo au sein d’un document PDF.
## Les _Movie annotations_ ##
La première méthode a été introduite dans la version 1.2 du format PDF, sous la forme du type d’annotation « Movie » (une _annotation_, dans le jargon PDF, désigne toutes sortes d’objets avec lesquels l’utilisateur peut interagir).
Il s’agit _a priori_ de la méthode la plus simple. Elle consiste en une seule annotation contenant un lien vers la vidéo (il peut s’agir d’un lien vers un fichier externe ou, à partir de PDF 1.3, d’un lien vers un fichier inclus directement dans le fichier PDF) et quelques paramètres contrôlant son affichage (taille, aspect, rotation, affichage ou non de boutons de lecture/pause, etc.).
Voici un exemple d’une telle annotation :
```
1 0 obj << /Type /Annot /Subtype /Movie /Rect [x1 y1 x2 y2] % emplacement de la vidéo sur la page /Movie << /F (video.avi)>> % lien vers le fichier
/A << /ShowControls true>> % paramètres d’affichage (ici, on demande l’affichage des boutons de contrôle)>> endobj
```
## Les _Screen annotations_ ##
La seconde méthode repose sur les fonctionnalités multimédia introduites dans PDF 1.5, et plus particulièrement l’annotation de type « Screen ».
Cette méthode est plus complexe et nécessite au moins quatre objets distincts. D’abord, l’annotation « Screen » proprement dite :
```
1 0 obj << /Type /Annot /Subtype /Screen /Rect [x1 y1 x2 y2] % emplacement de l’annotation /P nn 0 R % référence à la page à laquelle l’annotation est rattachée /T (Titre du film) % indicatif uniquement /A 2 0 R % référence vers un « dictionnaire d’actions »>> endobj
```
Le « dictionnaire d’actions » indique le comportement à adopter lorsque l’utilisateur interagit avec l’annotation. Voici le plus simple exemple, où l’on demande un comportement élémentaire (cliquer sur l’annotation déclenche la lecture, cliquer à nouveau met en pause) :
```
2 0 obj << /Type /Action /S /Rendition /R 3 0 R % référence vers un objet de type « Media Rendition » /AN 1 0 R % référence retour vers l’annotation « Screen » /OP 0 % comportement standard (cliquer pour lire/arrêter)>> endobj
```
Le dictionnaire d’actions peut être plus complexe et permet notamment l’utilisation de Javascript pour coder les actions de son choix.
L’objet « MediaRendition », référencé dans le dictionnaire d’actions, indique au minimum le média à jouer, et optionnellement comment le jouer :
```
3 0 obj << /Type /Rendition /S /MR /C 4 0 R % référence vers un objet « Media Clip Data » /P << /Type /MediaPlayParams ...>> % options de lecture
/SP << /Type /MediaScreenParams ...>> % options d’affichage>> endobj
```
Enfin, l’objet « Media Clip Data » représente le média à jouer proprement dit (ici, sous la forme d’un lien vers un fichier externe, mais ça pourrait être une référence vers un fichier inclus dans le PDF) :
```
4 0 obj << /Type /MediaClip /S /MCD /D (video.avi) % lien vers le fichier vidéo /CT (video/avi) % type MIME>> endobj
```
## Les _Rich Media annotations_ ##
La troisième méthode a été introduite par Adobe Acrobat 9. C’est une méthode encore plus complexe que la précédente (raison pour laquelle je ne fournirai pas d’exemple), mais en résumé, le principe consiste à confier la lecture de la vidéo à un lecteur Flash qui sera lui-même inclus dans le fichier PDF. C’est grosso modo la transposition dans les visionneurs PDF de ce qui se fait déjà dans les navigateurs web, et comme pour les navigateurs, cela nécessite que les visionneurs PDF soient capables d’exécuter du Flash.
(Vous pensiez être débarrassé du plugin Flash de votre navigateur avec HTML5 ? Tel Saruman qui chassé d’Isengard réapparait dans la Comté, le voici qui revient dans votre visionneur PDF...)
Les deux premières méthodes (_Movie_ et _Screen annotations_) font partie de la version standardisée du format PDF ([PDF 1.7, aka ISO3200-1:2008](http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf)), bien que la première y soit officiellement déclarée comme dépréciée en faveur de la seconde. La troisième méthode (_Rich Media annotation_) est documentée dans une extension de Adobe à la norme ISO3200 ([PDF 1.7 Extension Level 3](http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/adobe_supplement_iso32000_1.pdf)), mais non standardisée.
# Générer un PDF avec vidéo(s) intégrée(s) #
Maintenant qu’on sait ce qu’offre le format PDF, comment fait-on, concrètement, pour produire un PDF contenant des vidéos ?
Je parlerai essentiellement de LaTeX, parce que c’est ce que j’utilise et que ça fonctionne. Je dirai également deux mots de ce qui est supposé fonctionner avec DocBook. Si vous utilisez d’autres outils pour produire des PDF et qu’ils permettent l’inclusion de vidéos, manifestez-vous dans les commentaires.
## LaTeX ##
Il existe au moins trois paquets LaTeX permettant d’inclure une vidéo, chacun supportant l’une des trois méthodes décrites ci-dessus.
Le paquet *multimedia*, écrit par Till Tantau (aussi auteur de *beamer*, les deux paquets sont d’ailleurs distribués ensemble et la documentation de *multimedia* est incluse dans celle de *beamer*, même si chaque paquet peut être utilisé de façon indépendante), génère des _Movie annotations_ conformes au format PDF 1.2.
```latex
\usepackage{multimedia}
...
\movie[showcontrols,poster,width=4cm,height=2cm]{}{video.avi}
```
À noter que *multimedia* n’inclut pas physiquement le fichier vidéo dans le fichier PDF (ce qui n’est possible qu’à partir de PDF 1.3). Le fichier vidéo doit donc accompagner le fichier PDF pour que le visionneur PDF ait une chance de le trouver.
Le paquet *movie15*, écrit par Alexander Grahn, génère des _Screen annotations_ conformes au format PDF 1.5.
```latex
\usepackage{movie15}
...
\includemovie[controls,poster]{4cm}{2cm}{video.avi}
```
Contrairement au paquet précédent, la vidéo est ici réellement incluse dans le fichier PDF. De plus, *movie15* génère aussi une _File Attachment annotation_ qui permet, dans les visionneurs PDF qui supportent ce type d’annotation, d’offrir à l’utilisateur la possibilité d’extraire facilement le fichier inclus (autrement qu’en ayant recours à des outils comme _pdfannotextract_ ou _poppler-glib-demo_).
Enfin, le paquet *media9*, écrit par le même Alexander Grahn, génère des _Rich Media annotations_ compatibles avec Adobe Reader 9 et suivants.
```latex
\usepackage{media9}
...
\includemedia[%
addresource=video.avi,
flashvars={source=video.avi}]{}{VPlayer.swf}
```
(Avec tout le respect que j’ai pour Alexander Grahn, ne l’écoutez pas quand il dit que *movie15* est obsolète et devrait être remplacé par *media9*. Vous l’aurez compris, les deux paquets ne sont pas _du tout_ équivalents et le second ne peut pas être considéré comme une simple évolution du premier, puisqu’ils sont basés sur des méthodes d’inclusion complètement différentes — l’une standardisée, l’autre non.)
## DocBook ##
Voici un exemple sorti tout droit du [DocBook: The Definitive Guide](http://www.docbook.org/tdg/en/html/docbook.html) :
```xml