Pas d' ECM, car je n'ai rien trouvé sur le CTAN qui n'exige pas un lecteur flash pour le son ou acrobat-reader (qui l'a retiré de Linux depuis longtemps).(media9 et movie15)

Okukar ou Evince pourrait peut-être lire un tel fichier, mais rien pour le produire à ma connaissance (media9 et movie15)

Je crains qu'il n'y ait pas de solution libre, donc de devoir me passer de LaTeX.

Cette question est donc une bouteille à la mer.

Posée 30 Jul, 16:18

joseph-tux's gravatar image

joseph-tux
61745490
Taux d'acceptation : 7%

Modifiée 15 Aoû, 20:00

Pathe's gravatar image

Pathe ♦♦
7.9k88227272

Je pense à la commande \url de l'extension eponyme. Cette commande crée un lien et ouvre si nécessaire le navigateur par défaut.

Par quel mécanisme? Ce mécanisme ne permettrait-il pas d'envisager d'ouvrir un lecteur (mpv par exemple, où un lecteur graphique) sur le lien du fichier son? Je suis trop ignorant et non anglophone pour comprendre le code de l'extension url, et trop vieux pour espérer pouvoir apprendre; je suis plutôt en phase de désapprentissage, mais je résiste ;)

(04 Aoû, 09:56) joseph-tux joseph-tux's gravatar image

Comme mentionné dans ma réponse avant-hier, le support des feux formats FLV/FLA/… est retiré de la spécification PDF en 2019 et plus aucune visionneuse ne le prend plus en charge depuis 2021. Cela rend obsolète les extensions (et programmes comme XPress par exemple) qui s’appuyaient sur cette possibilité, sauf si on lit le document avec des lecteurs PDF spécifiques dans une version donnée (et certainement pas corrigée au regard de certaines failles de sécurité).
Cependant, il semble que divers programmes permettent encore d’ajouter des médias (vidéos et audios) au sein des PDF : Acrobat Pro et PDF maker, InDesign et XPress, LibreOffice (il semble depuis 2017, et les formats supportés dépendent de chaque plateforme…) et d’autres suites bureautiques. Ce qui laisse entendre qu’il y a un autre mécanisme… Après avoir écumé la toile, j’ai appris que ça passe maintenant par les API des “annotations écran (screen)” —introduite dans la section 2.5 de la version 2.0 de 2020, et largement supportée/adoptée (voir par exemple patagames, mapsoft, https://www.nutrient.io/blog/what-are-annotations/), et autres">nutrient— et non plus celles des “annotations multimédias (rich media)” propriétaires… Bref, fort de cela Fritz a proposé un patch simplemedia sur Tex.SE que je reproduis ici:

\documentclass{article}
\usepackage{media9} %? \mediarendition{} \renditionactionplay{} \renditionactionstop{}
\usepackage{xkeyval} % \define@boolkey{}[]{}[]{} \presetkeys{}{}{} \setkeys{}{} \ifKV@…@…
\usepackage{zref-abspage} % \zref@labelbyprops{}{abspage}
\makeatletter
\define@boolkey{simplemedia}{autoplay}{\def\simplemediaautoplay{#1}}
\define@boolkey{simplemedia}{showGUI}{\def\simplemediashowGUI{#1}}
\presetkeys{simplemedia}{autoplay=true,showGUI=true}{}
\ExplSyntaxOn
\newcommand\simplemedia[4][]{% \simplemedia[<options>]{<poster or text>}{<media file>}{MIME type}
  \setkeys{simplemedia}{#1}%
  \leavevmode
  \pbs_pdfobj:nnn{}{fstream}{{}{#3}}
  \pbs_pdfobj:nnn{}{dict}{
    /Type/Filespec/F~(#3)/UF~(#3)
    /EF~<</F~\pbs_pdflastobj:>>
  }
  \pbs_pdfobj:nnn{}{dict}{
    /CT~(#4)% content type (p.764, table 9.9)
    /D~\pbs_pdflastobj:% full file specification (p.764, table 9.9)
    /N~(Media~clip~from~#3)% name of media clip (p. 764, table 9.8)
    /P~<</TF (TEMPACCESS)>>% media permissions (p.764, table 9.9)
    /S~/MCD% subtype media-clip-data (p.764, table 9.8)
  }
  \pbs_pdfobj:nnn{}{dict}{
    /C~\pbs_pdflastobj:% media clip dictionary (p.762, table 9.6)
    /N~(RenditionFrom#3)% name of rendition (p.759, table 9.1)
    /P~<<% media play parameters dictionary (p.762, table 9.6)
      /BE~<</C~\simplemediashowGUI~%C: display a player-specific controller UI (p.769, table 9.15)
      /A~true>>~%A: automatically play when activated (p.770, table 9.15)
      %/PL~<</A~[% arrray of media player info objects (p.777)
      %<</PID~<</U~(vnd.adobe.swname:ADBE_MCI)~>>~>>~% PID: software identifier object (p.779)
      %<</PID~<</U~(vnd.adobe.swname:MSFT_WindowsMediaPlayer)~OS[(win16)~(win32)~(win9x)~(winnt)~(wince)]>>~>>~%/OS operating system (p.780)
            %]~>>
    ~>>
    /S~/MR% subtype of rendition (p.759, table 9.1)
  }
  \tl_set:Nx\mediarendition{\pbs_pdflastobj:}
  \pbs_pdfobj:nnn{}{dict}{}% obj-number created for later use
  \tl_set:Nx\renditionactionplay{\pbs_pdflastobj:}%
  \pbs_pdfobj:nnn{}{dict}{}% obj-number created for later use
  \tl_set:Nx\renditionactionstop{\pbs_pdflastobj:}%
  \hbox_set:Nn\l_tmpa_box{#2}% size of annotation
  \tl_set:Nx\l_box_wd_tl{\dim_use:N\box_wd:N\l_tmpa_box}
  \tl_set:Nx\l_box_ht_tl{\dim_use:N\box_ht:N\l_tmpa_box}
  \tl_set:Nx\l_box_dp_tl{\dim_use:N\box_dp:N\l_tmpa_box}
  \pbs_pdfxform:nnnnn{1}{1}{}{}{\l_tmpa_box}
  \tl_set:Nx\l_simplem_current_page_tl{\zref@extract{simplem@\int_use:N\g_simplem_id_int}{abspage}}
  \pbs_pdfannot:nnnn{\l_box_wd_tl}{\l_box_ht_tl}{\l_box_dp_tl}{
    /T~(AnnotationFrom#3)~% title of screen annotation (p.640, table 8.38)
    /Subtype~/Screen~% Subtype Sreen (p.616, table 8.20 ; p.640, table 8.38)
    /BS~<</W~1/S/S>>% Borderstyle
    /C~[0.039216~0.039216~0.039216]% color used background, title bar, border (p.607, table 8.15)
    /Contents~(EmbeddedAudiofile#3)% Text to be displayed (p.606, table 8.15)
    /NM~(audioscreenannot:#3)% annotation name (p.606, table 8.15)
    /AP~<</N~\pbs_pdflastxform:>>% appearance dictionary (p.606, table 8.15)
    /F~4~%Annotation flag (p.606, table 8.15 ; p.608, table 8.16)
    /A~\renditionactionplay~% Action to be performed (p.640)
      % autoplay is realised by "additional action" (p.640)
      % PageOpen (PO) -> play "Play Rendition"
      % PageClose (PC) -> play "Stop Rendition" (p.650)
    /AA~<<\ifKV@simplemedia@autoplay~/PO~\renditionactionplay~\fi~/PC~\renditionactionstop~>>~%
    \int_compare:nT{\l_simplem_current_page_tl>0}{
      /P~\exp_args:Ne\pdf_pageobject_ref:n{\l_simplem_current_page_tl}
    }
    /CA~1%constant opacity value (p.618)
  }
  \pbs_pdfobj:nnn{\renditionactionplay}{dict}{%
    /R~\mediarendition%
    /S~/Rendition
    /OP~4%operation to perform (p.669): 4 = play rendition specified by R
    /AN~\pbs_pdflastann:%
  }
  \pbs_pdfobj:nnn{\renditionactionstop}{dict}{%
    /R~\mediarendition%
    /S~/Rendition
    /OP~1%operation to perform (p.669): 1 = stop rendition specified by R
    /AN~\pbs_pdflastann:%
  }
  \phantom{#2}
  \zref@labelbyprops{simplem@\int_use:N\g_simplem_id_int}{abspage}
  \int_gincr:N\g_simplem_id_int
}% all pp.refs relate to: "Adobe PDF Reference, 6th edition, November 2006" @ https://ghostscript.com/~robin/pdf_reference17.pdf
\int_new:N\g_simplem_id_int
\ExplSyntaxOff
\makeatother
\begin{document}
\simplemedia{%
  \includegraphics[width=.96\textwidth,]{fichier-vignette-sans-extension}%
}{fichier-audio.extension}{audio/soustype}
\end{document}

J’ai testé, en lisant le PDF généré via Firefox et ça marche chez moi. :)
Théoriquement, on n’est plus limité par les formats AV supportés par Flash car on spécifie le type MIME et le/la destinataire se débrouille avec.
Attention aussi que ce correctif non seulement nécessite le chargement de media9 (je n’ai pas compris comment ça joue mais j’ai lu en diagonale) d’une part et que le média n’est pas embarqué d’autre part (ça c’est comme dans la réponse précédente, et ce n’est pas mauvais car on s’évite un document final obèse mais faut s’organiser autrement : transmettre l’ensemble comme une archive ou mettre les médias en ligne.)

Lien permanent

Publiée 14 Sep, 13:22

Gil%20Cot's gravatar image

Gil Cot
313
Taux d'acceptation : 0%

«introduite dans la section 2.5 de la version 2.0 de 2020».

Si je comprends bien, il s'agit de la version 2.0 du format de fichier pdf. Dans ce cas comment générer (ou convertir) un fichier produit par XeLaTeX (ou autre)? Il me semble avoir trouvé ce moyen, mais je ne l'ai pas retrouvé.

Dans ce cas votre information semble être vraiment la réponse à ma question, et l'appel sur commande à un lecteur média externe pour différents fichiers son est exactement ce que je cherche. J'espère trouver bientôt le temps d'explorer, de comprendre son utilisation et de tester ce script. Grand merci Gil Cot

(14 Sep, 14:24) joseph-tux joseph-tux's gravatar image

Exactement, la seconde grande version du standard/spécification adopté comme ISO 32000-2:2017 puis ISO 32000-2:2020 (tandis que ISO 32000-1:2008 couvre jusqu’à la version 1.7L3)

Le patch proposé par Fritz, et que j’ai reposé légèrement édité, injecte directement les codes d’annotation dans le PDF généré donc ça devrait passer pour n’importe quel moteur (j’ai fait mon test avec pdfLaTeX par exemple, qui génère du PDF 1.7… mais ça semble suffire ici)

(14 Sep, 15:52) Gil Cot Gil%20Cot's gravatar image

En fait, le support du format Flash est supprimé du format PDF depuis fin 2020 (pas que pour Linux, plus aucun lecteur sur aucune plateforme depuis lors ne gère ce format). Les extensions movie15 puis media9 ont exploité cette capacité en injectant un code Flash Player pour lire les flux supportés joints aux PDF.
Ces extensions ne sont donc plus utiles avec la mort du format Flash (même sur le web) depuis belle lurette. Elles sont encore là pour ne pas casser la recompilation des anciens documents qui les ont utilisé, mais ces documents ne sont plus exploitables (du moins pour les flux multimédias inclus) depuis fort longtemps…

Je ne l’ai pas testé par moi même, mais si tu as PDFPC installé et testé fonctionnel, alors tu peux regarder l’extension pdfpc + pdfpc-movie ;)

\documentclass{article}
\usepackage{pdfpc-movie}
\begin{document}
\pdfpcmovie[width=.96\textwidth,]{%
  \includegraphics[width=.96\textwidth,]{fichier-vignette-sans-extension}%
}{fichier-video-sans-image.extension}
\end{document}

Par contre, il faudra que ton audio soit dans un conteneur AV car ça gère de base de la vidéo (formats .mp4, .avi, .mov, etc.
Je crois que ça lance la commande pdfpc pour lire le flux ? En tout cas celui-ci n’est pas embarqué dans le PDF.


Si tu veux faire la même chose directement, en lançant ton lecteur configuré par défaut (mplayer/mpv/vlc/smplayer/parole/totem/etc.), avec Hyper Ref c’est assez simple :

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{run:./fichier-video-ou-audio.extension}{%
  \includegraphics[width=.99\textwidth,]{fichier-vignette-sans-extension}%
}
\end{document}

Ces deux solutions devraient fonctionner avec avec les anciens et futurs lecteurs de PDF ;)

Lien permanent

Publiée 11 Sep, 22:15

Gil%20Cot's gravatar image

Gil Cot
313
Taux d'acceptation : 0%

Modifiée 14 Sep, 11:29

Merci Gil Cot. J'ai utilisé autrefois pdfpc pour des présentations avec Beamer. J'ignorai l'existence de pdfpc-movie. Je teste;reste à trouver comment intervenir pour lancer le lecteur (mpv par exemple) et interagir (volume, pause etc.)

(12 Sep, 11:57) joseph-tux joseph-tux's gravatar image

Salut @joseph-tux. Je pense que la première solution (PDFPC) va fonctionner comme tu en as déjà l’habitude. La seconde solution (lien direct en utilisant HyperRef et le schéma peu connu/courant run:) va te permettre de lancer le lecteur configuré qui offrira les contrôles qui vont bien.

(12 Sep, 16:41) Gil Cot Gil%20Cot's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.