Outils pour utilisateurs

Outils du site


public:specs_multimedia

Intégration multimédia (image, audio, vidéo)

Objectif

Augmenter les possibilités de 'retour au texte' ou de 'retour aux sources primaires' avec les données tierces multimédia :

  • image : intégrer les images de facsimilés d'éditions ou de manuscrits dans les éditions TXM. C'est déjà une réalité dans la version portail, il faut l'ajouter à la version bureau. Améliorations possibles :
    • intégrer la gestion d'images dans les modules d'import concernés (pour que la totalité du workflow allant des sources aux éditions HTML soit intégrée dans les modules d'import de TXM) ;
    • ajouter la possibilité de faire un focus / scroll dans l'image là où le mot se trouve (en utilisant les coordonnées des mots du texte dans l'image, que l'on peut trouver dans des sources TEI par exemple).
  • audio, vidéo : jouer le son ou la vidéo d'un passage balisé temporellement contenant le mot (dans le cas des transcriptions avec des marques de synchronisation). On peut afficher une onde sonore quand on joue de l'audio, pour aider à situer les paroles ou les sons (comme Transcriber). On peut aussi afficher un spectre en couleur (voir ma démo réalisée avec L. Mondada pour l'exposition “Making Things Public” au ZKM à Karlsruhe en Mars 2005).

Spécifications

Les versions bureau et portail se distinguent pas mal pour jouer les fichiers multimédia :

  • la version bureau peut utiliser les fichiers média se trouvant sur la machine exécutant TXM ;
  • le client web de la version portail fait appel au portail serveur pour accéder aux médias. Pour l'audio et la vidéo cet accès se fait en flux par le réseau ET il faut gérer le contrôle d'accès.

Par contre, elles partagent le même environnement d'import. Cet environnement doit évoluer pour aider les deux version à gérer ces données en relation avec les éditions.

Chantiers pour la version bureau :

  • Il faudra ajouter au format XML-TXM la définition de l'encodage TEI de la sychronisation des tours de parole
  • Il faudra ajouter des paramètres d'import XML-TRS+CSV :
    • utiliser les fichiers média : oui/non (voire 'type de média' disponible : audio ou vidéo ou aucun - ça permettrait de construire des UI adaptée au corpus cf éditeur du lecteur de média)
    • liste des structures synchronisées : structures susceptibles de porter des informations de synchronisation utilisables par le retour au média : “sp” ou “u” par exemple (sp est plus long, u est plus court…)
  • Il faudra ajouter au module d'import XML-TRS+CSV la copie ou le lien des fichiers vidéo ou audio dans le répertoire 'media' du corpus binaire ainsi que la mémorisation du type de média
  • Il faudra travailler sur l'import LIMSI pour que les corpus Matrice puissent bénéficier de ce service dans TXM
  • Il faudra ajouter des paramètres au lecteur de média :
    • jouer le média dans l'interval de temps des structures X : sp, u… (l'utilisateur choisira la granularité temporelle de ce qu'il veut jouer dans le retour au média) [cette liste est à construire à partir des infos du paramètre d'import correspondant]
    • option jouer en boucle (utile pour l'analyse des intervalles courts)
  • Il faudra faire évoluer le composant d'édition pour :
    • pouvoir faire un rendu visuel comme Transcriber quand on joue le média : le segment textuel de la transcription correspondant à ce qui est joué est mis en évidence en temps réel
    • combiner le retour au média et à l'édition : vue synoptique triple - concordance + média + édition
  • Il faudra ajouter un raccourcis clavier vers la commande 'media player' dans les concordances
  • On pourra ajouter une vue d'onde sonore similaire à celle de Transcriber
  • On pourra lier la vue Sommaire au retour au média

Granularité de l'empan du retour au média

Corpus importé avec le module d'import transcriber

Plusieurs granularités d'information sont possibles après un import Transcriber :

  • à N mots avant et après le pivot : si on a le timing exact des mots (souvent le cas d'une reconnaissance automatique)
    • avec une propriété “time”
  • au tour de parole : sp (correspond à la balise Turn)
    • avec deux propriétés : start et end
  • à la prise de parole : u (correspond à un milestone Sync, mais que l'on transforme en structure pour pouvoir l'exploiter avec CQP)
    • avec une propriété : start

On a 3 modes de retour :

  • “Word”, avec 2 paramètres : la propriété “time” des mots à exploiter et le nombre de mots avant et après le pivot.
    • Algo : pour le retour au média du pivot P, on récupère le timing du Nième mot précédent le premier mot de P et le timing du nième mot suivant le dernier mot de P
  • “Structure”, avec 3 paramètres : la structure a exploitée, le temps “start” et le “end”
    • Algo : on récupère la structure contenant le premier mot du pivot. A partir de cette structure on récupère le temps de début et de fin
  • “Milestone”, avec 2 paramètres : le nom de la structure et la propriété de timing de début
    • Algo : on récupère la structure du premier mot du pivot, on utilise son timing pour le début, on récupère la structure suivante et son timing pour la fin

Accès aux fichiers média

TXM 0.8.0

Dans la version 1.0 de l'extension MediaPlayer, ce sont les préférences de l'extension qui vont driver le mode de retours au média. Les corpus (projet) peuvent surcharger ces préférences en utilisant leurs propres préférences stockées dans le fichier “.settings/CorpusCommandPreferences.prefs” :

  • réglage du mode de retour au média :
    • backtomedia/backtomedia_endproperty = propriété de timing de fin
    • backtomedia/backtomedia_startproperty = propriété de timing de début OU timing de milestone
    • backtomedia/backtomedia_structure = structure ou milestone portant l'information de temps
    • backtomedia/sync_mode = mode de retour au média : “Word”, “Structure” ou “Milestone”
  • réglage de l'accès au fichiers média:
    • backtomedia/media_directory = chemin alternatif d'accès aux fichiers
    • backtomedia/media_format = format des fichiers media à lire (n'importe quel format lisible avec VLC)
    • le chemin d'accès au fichier média est alors construit à partir de ces 2 préférences : media_directory + “/” + text_id + “.” + media_format
  • réglage d'un index d'accès aux fichiers media
    • backtomedia/media_index_node=<nom de noeud de préférence>
    • il faut ensuite ajouter un fichier “media_index.prefs” qui contient des entrées de préférence qui associe à chaque identifiant de texte un chemin d'accès au fichier média.

Exemple de réglage de l’empan à jouer

backtomedia/backtomedia_endproperty=s
backtomedia/backtomedia_startproperty=s
backtomedia/backtomedia_structure=u
backtomedia/name=backtomedia
backtomedia/sync_mode=Milestone

Exemple de répertoire de média alternatif

backtomedia/backtomedia_endproperty=s
backtomedia/backtomedia_startproperty=s
backtomedia/backtomedia_structure=u
backtomedia/name=backtomedia
backtomedia/sync_mode=Milestone
backtomedia/media_directory=http:////serveur/files
backtomedia/media_format=wav

Exemple d'index de fichiers média

dans “.settings/CorpusCommandPreferences.prefs” :

backtomedia/backtomedia_endproperty=s
backtomedia/backtomedia_startproperty=s
backtomedia/backtomedia_structure=u
backtomedia/name=backtomedia
backtomedia/sync_mode=Milestone
backtomedia/media_index_node

dans “.settings/index_media.prefs” :

text1=/chemin/vers/le/fichier
text2=/autre/chemin/vers/le/fichier
text3=http:////ailleurs.sur.le.web/lefichier.mp4

Solution

État de l'art

Version bureau

Image

Le navigateur intégré dans TXM peut afficher des images dans les éditions HTML.

Il faut juste développer les modules d'import pour prendre en compte des répertoires d'images liés aux sources.

Il faut peut-être aider à dissocier les répertoires d'images des répertoires HTML pour que l'utilisateur puisse gérer la quantité de stockage nécessaire à ses éditions. C'est-à-dire :

  • prévoir le fait que des images puissent être affichées (de façon synoptique par exemple) ;
  • avoir une dégradation acceptable de l'interface en cas d'absence des images ;
  • aider à ajouter les répertoires d'images à la demande.
Audio, Vidéo

La contrainte la plus forte vient de la diversité des codecs. Java ne semble pas très développé de ce côté.

VLC est une solution libre multiplateforme s'occupant de tous les codecs.

L'API VLCJ est recommandée par le projet VLC pour jouer de l'audio ou de la vidéo avec VLC depuis Java.

Sinon il y a l'excellente plateforme ADVENE qui joue des vidéos en local et superpose des overlays SVG en temps réel.

Version portail

Image

SmartGWT gère les pages HTML incluant des images.

Je ne sais pas comment les images sont gérées dans les éditions HTML d'un portail TXM : accès public ou pas.

Audio, Vidéo

HTML5

Aujourd'hui, Décembre 2013, je pense qu'il faut essayer la carte HTML5.

Voir par exemple la balise <video> de la page de démo suivante : http://craftymind.com/factory/html5video/CanvasVideo.html.
Cette démo fonctionne dans mon Firefox 25.0.1, Ubuntu 12.04, Samsung Serie 9, 64bit.

Mise en place :

  • côté client : les navigateurs supportent nativement les balises <audio> et <video> HTML5,
    Exemple de page JSP :
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!doctype html>
<html>

<head>
<title>Video App</title>
</head>

<body>
    <h1>Enjoy the Video</h1>
    <video controls width="512" height="288">
      <source src="<c:url value="/media/video.webm" type="video/webm">
      <source src="<c:url value="/media/video.mp4" type="video/mp4">
      I'm sorry; your browser doesn't support HTML5 video in WebM format with VP8 video codec or MP4 format with H.264 video codec.
    </video>
</body>

</html>


Le client va essayer de jouer le premier fichier dont il gère le format. Le format WEBM semble convenir aux clients ouverts et le format MP4 aux clients propriétaires, voir la documentation Mozilla sur les formats vidéo HTML5 supportés.

  • côté serveur : il semble qu'il suffise de donner accès à un fichier vidéo au bon format, comme pour une image.
    Par exemple, pour le code HTML précédent on dépose ou met un lien vers les deux versions du fichier vidéo dans : “src/main/webapp/media/video.webm” et “src/main/webapp/media/video.mp4”
    Il peut être nécessaire d'ajouter les déclarations suivantes à un fichier de configuration :
<mime-mapping>
  <extension>webm</extension>
  <mime-type>video/webm</mime-type>
</mime-mapping>
<mime-mapping>
  <extension>mp4</extension>
  <mime-type>video/mp4</mime-type>
</mime-mapping>

Une évolution pourra consister à associer la vidéo à des données 3D en ligne avec X3DOM : tester X3DOM, tester WebGL, Exemple X3DOM, exemple X3DOM avec vidéo.

Streaming

Sinon il y a les solutions basées sur des serveurs de streaming.

Par exemple VISU, qui ne semble plus développé.

Version finale

Recette

Protocole de test

Alpha

  • Charger le corpus TRSMedia (voir SPUV)
  • Faire une concordance avec la requête “consultation”
  • Lire le média (raccourcis CTRL + SHIFT + M)
    • Le dernier tour doit être joué
    • Il doit être joué en boucle
1ere version : 1.0.0.201404141157

Améliorations/Bugs du plugin prototype media player :

  • il faudrait éviter d'ouvrir une nouvelle fenêtre à chaque retour au média (réutiliser la même comme pour l'édition)
  • la fenêtre du lecteur de média ne devrait pas avoir de zone pour l'image vidéo si le fichier n'est pas un fichier vidéo (l'API VLCJ permet peut-être d'accéder aux informations sur le média ouvert ?)
    • dans le cas de l'audio, c'est à dire si le lecteur n'est composé que de widgets de contrôle, une stratégie pourrait consister à augmenter l'éditeur de l'édition par ces widgets. Du coup, plutôt que d'ouvrir un nouvel éditeur de lecteur média, on ouvrirait l'éditeur de l'édition. Une alternative est d'augmenter l'éditeur des concordances avec ces widgets de contrôle, du coup le retour au média n'ouvrirait pas d'éditeur dans le cas de l'audio
2e version : 1.0.0.201404241737
Mets tes derniers retours ici Serge ❤

(Retours pour le plugin “BackToMedia 1.0.0.201404241737 BackToMedia.feature.group null”) MD : OK

[l'extension a été renommée 'Media PLayer']

Remarques :

  • (ça ne correspond pas au n° de plugin du titre de la section) MD : OK
  • les retours marqués 'A' sont prioritaires (bloquants pour la plupart)

Description du plugin

  • il faut remplacer le 'null' par quelque chose

Installation

  • Message d'erreur dans la Console : “[Fatal Error] :9:141: The reference to entity “format” must end with the ';' delimiter.”. Ça ne semble pas gêner le fonctionnement mais on se demande si tout s'est bien passé → il faut voir comment éviter que ce message d'affiche.

UI

(Play/Resume) A

Après avoir fait une pause, il faut voir si l'utilisateur n'a pas édité les champs start ou end entre temps au moment de la reprise :

(stop button) A

(start and end time input fields) #786

  • start and end time input fields should not be so big (maximum size should hold 10 hours)
  • start and end time input fields should display time with the same style as the edition
  • if Loop, Rate and Vol start with caps, so must do start and end also → Start, End

(time) A

(loop) A

(rate) #788

  • current rate value must be displayed
  • a central point must be displayed on the cursor bar to show the middle rate
  • when rate slider is put too far on the left (low value) → cpu hits the roof and we loose control of TXM → Rate value should not go under a minimum threshold.

(volume) #789

  • current volume value must be displayed
  • 0 volume level is not on the left end of the scroll bar but at a quarter from the left → the 0 volume offset must be corrected

Concordance / Contextual menu

Homogénéisation des dénominations de retours au texte/média :

  • renommer en 'Display in Text / Afficher dans le texte'
  • renommer en 'Play Media / Jouer le média'

Console messages

Suppress unnecessary messages.

3e version : à venir

Beta

État courant

Première solution, l'extension “Media PLayer” est le résultat d'une première intégration de la librairie VLCJ dans TXM.

Elle nécessite l'installation au préalable de la version de VLC correspondant à l'architecture de la machine (32-bit ou 64-bit).

Elle est accessible depuis TXM 0.7.5beta : se positionner en niveau de mise à jour ALPHA et ajouter une extension.

Elle ajoute 2 commandes à TXM :

  • Dans le menu Fichier : 'Open media…' pour ouvrir une vidéo ou un son situé sur le disque dur
    • Cela ouvre une fenêtre de player video/audio très basique qui permet de jouer, stopper, sélectionner un média. Et aussi de définir un intervalle de temps à lire.
  • Dans le menu déroulant des concordances : 'Play media'
    • Récupère le “sp_starttime” et le “sp_endtime” du tour de parole “sp” contenant le pivot de la ligne. “sp_starttime” et “sp_endtime” sont en secondes (entiers ou flottants).
    • Récupère l'identifiant de texte du pivot
    • Joue le fichier média se trouvant dans le dossier “$CORPUSBINAIRE/media” ayant pour nom “$textid.(mp3|wav|avi)” dans l'intervalle de temps “sp_starttime” à “sp_endtime”
    • Réouvre le même lecteur lorsqu'il a déjà été ouvert depuis la concordance par un précédent retour au média (comme pour l'édition et le retour au texte)
    • Message d'erreur quand aucun fichier média à été trouvé
      Error: no media file (mp3, wav, mp4 or avi) found for name: frint980428
      All media files should be stored in the '/home/mdecorde/TXM/corpora/trsmedia/media' directory.
      Media file names should be '<transcription ID>.<supported format>'
    • Sous-titre : si un fichier STR est présent dans le dossie media, alors il sera utilisé. Le nom du fichier suit le format suivant : “$NOMDUFICHIERMEDIA.srt”. Par exemple pour une vidéo “fichier.mp4”, le fichier srt doit être nommé “fichier.mp4.srt”
  • Le raccourcis clavier CTRL - SHIFT - M appelle la commande “Play media”, il faut pour cela qu'une ligne de concordance soit sélectionnée

Préparation du corpus :

  • Le retour au média ne fonctionne donc pour l'instant qu'avec un corpus importé avec le module XML-TRS+CSV (à la limite XML/w+CSV si le XML contient des sp@starttime et sp@endtime)
  • Pour que la deuxième commande fonctionne, il faut au préalable créer soi-même un répertoire 'media' dans le répertoire corpus binaire TXM local du corpus et y mettre le fichier vidéo ou audio à jouer avec un nom qui correspond à celui du fichier source de la transcription

Procédure de recette BETA avec le corpus P1S8

  • placer TXM en niveau de mise à jour BETA
  • ajouter l'extension Media Player
  • télécharger le corpus binaire 'p1s8-bin.txm' à https://sourceforge.net/projects/txm/files/corpora/p1s8-course-transcription
  • charger ce corpus
  • télécharger la vidéo de cette transcription 'P1S8 30 avril 2014.mp4'
  • créer le répertoire $HOME/corpora/p1s8/media
  • y placer la vidéo
  • faire la concordance de 'lumière' sur P1S8
  • ouvrir le menu contextuel (clic droit) sur la ligne correspondant à l'énoncé commençant à 0:30:49 :
P1S8 30 avril 2014, P, 0:30:49	prisme il disperse si vous faites taper la	lumière		d'un néon sur un CD vous ne verrez pas toutes les
  • lancer la commande 'Jouer le média' → la vidéo est jouée sur l'intervalle du tour de parole
  • séparer l'affichage en glissant l'onglet du lecteur vidéo de sorte à voir simultanément la concordance et la vidéo
  • double-cliquer sur la ligne de concordance pour ouvrir l'édition de la transcription
  • faire glisser l'onglet de l'édition pour obtenir un affichage synoptique concordance+transcription+vidéo
    → vous devriez obtenir quelque chose similaire à l'image ci-dessous :

conc-trans-video-prisme-p1-s8.jpg

public/specs_multimedia.txt · Dernière modification: 2019/07/12 15:00 par matthieu.decorde@ens-lyon.fr