« Tutoriel transcriptions » : différence entre les versions

De April MediaWiki
Aller à la navigationAller à la recherche
Aucun résumé des modifications
 
(5 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 54 : Ligne 54 :


Le programme ''trans'' du paquet Debian ''transcriber'' semble riche et prometteur. Si quelqu'un apprend à s'en servir et peut expliquer comment procéder efficacement, ses conseils seront les bienvenus ('''TODO'''). Attention, la page web du projet donnée dans la documentation a disparu; le projet est désormais [http://sourceforge.net/projects/trans/ hébergé sur Sourceforge].
Le programme ''trans'' du paquet Debian ''transcriber'' semble riche et prometteur. Si quelqu'un apprend à s'en servir et peut expliquer comment procéder efficacement, ses conseils seront les bienvenus ('''TODO'''). Attention, la page web du projet donnée dans la documentation a disparu; le projet est désormais [http://sourceforge.net/projects/trans/ hébergé sur Sourceforge].
Remplacé par [https://transag.sourceforge.net/ TranscriberAG] sous licence GPLv3.


==== Programme temporel simple ====
==== Programme temporel simple ====


Le programme [bin/Play.pl Play.pl] permet de jouer des petites portions (intervalles) d'un média afin de les transcrire au fur et à mesure. Il dispose d'options d'ergonomie. Il joue le fichier indiqué dans la variable d'environnement ''MEDIA_FILE''. Les valeurs des variables utilisées sont rappelées dans un ''xmessage''.
Le programme [http://www.april.org/files/Play.pl Play.pl] permet de jouer des petites portions (intervalles) d'un média afin de les transcrire au fur et à mesure. Il dispose d'options d'ergonomie. Il joue le fichier indiqué dans la variable d'environnement ''MEDIA_FILE''. Les valeurs des variables utilisées sont rappelées dans un ''xmessage''.


On pourra l'interfacer avec l'éditeur de textes VIM en insérant les lignes suivantes dans son fichier de configuration:
On pourra l'interfacer avec l'éditeur de textes VIM en insérant les lignes suivantes dans son fichier de configuration:
Ligne 135 : Ligne 137 :


'''Note''': VIM n'est en rien imposé ou nécessaire; la plupart des autres éditeurs de texte programmables pourront eux aussi être raccordés au programme ''Play.pl''. Communiquez-moi les instructions de configuration et je les mentionnerai ici.
'''Note''': VIM n'est en rien imposé ou nécessaire; la plupart des autres éditeurs de texte programmables pourront eux aussi être raccordés au programme ''Play.pl''. Communiquez-moi les instructions de configuration et je les mentionnerai ici.
==== ELAN (EUDICO Linguistic Annotator) ====
Je teste ce logiciel depuis une petite semaine.
[https://tla.mpi.nl/tools/tla-tools/elan/elan-description/ ELAN] est un logiciel d’annotation multimédia (sons et vidéo) qui dispose de vues adaptées pour la segmentation et la transcription ainsi que d’outils de segmentation automatique.
Ma modeste pratique m’a, pour l’instant, permis de dégager 4 étapes : la conversion éventuelle des médias (pour afficher la forme d’onde d’une piste audio, celle-ci doit être au format "wav"), une segmentation automatique préliminaire, une écoute globale (éventuellement à vitesse rapide) permettant de se familiariser avec le contenu et d’ajuster les segments (redécoupage, assemblage, suppression, etc.) et, enfin, la transcription.
Dans la vue adaptée à la transcription, chaque segment est associé à une case de saisie textuelle et est synchronisé avec un passage des médias. Le passage d’une case à l’autre déplace la tête de lecture sur la portion des médias correspondante (lecture automatique ou déclenchée manuellement). On dispose de l’option de lecture en boucle et de la possibilité de changer la vitesse de lecture.
Un autre élément qui me semble intéressant est la possibilité de synchroniser plusieurs textes. J’ai envisagé de profiter de cette facilité pour faire une première passe de transcription fidèle avec, en vis-à-vis et dans un second temps, une reformulation plus fluide. Le tout en conservant le lien aux médias pour faciliter les relectures et les reprises.


==== Programme syllabique plus évolué ====
==== Programme syllabique plus évolué ====
Ligne 142 : Ligne 156 :
L'ensemble se compose de trois éléments:
L'ensemble se compose de trois éléments:


# Un [bin/w.c programme C], qui analyse le fichier son (au format WAV 16 bits).  On le compile sans difficulté particulière, par exemple avec ''gcc -Wall -O2 -o w wav.c''.
# Un [http://www.april.org/files/w.c programme C], qui analyse le fichier son (au format WAV 16 bits).  On le compile sans difficulté particulière, par exemple avec ''gcc -Wall -O2 -o w wav.c''.
# Un [bin/P.pl script Perl], qui exploite les données produites pour en jouer les portions repérées une à une.
# Un [http://www.april.org/files/P.pl script Perl], qui exploite les données produites pour en jouer les portions repérées une à une.
# Quelques lignes de configuration instrumentant l'éditeur de texte employé pour faire appel à ce script.
# Quelques lignes de configuration instrumentant l'éditeur de texte employé pour faire appel à ce script.


=== Méthode opératoire pour appliquer le découpage syllabique ===
=== Méthode opératoire pour appliquer le découpage syllabique ===
Ligne 229 : Ligne 242 :
</pre>
</pre>


si cela correspond à une borne du morcellement sonore; ce mot sera recollé ensuite par le programme <a href="bin/Rush_to_TXT.sh">Rush_to_TXT.sh</a>.
si cela correspond à une borne du morcellement sonore; ce mot sera recollé ensuite par le programme <a href="http://www.april.org/files/Rush_to_TXT.sh">Rush_to_TXT.sh</a>.


Note importante: si l'on a décodé le média compressé (au format ''.ogg'' par exemple) en le transformant en ''.wav'', la réactivité sera instantanée au lieu d'être de plus en plus longue: en effet, le format WAV permet au lecteur de se rendre directement au bon endroit du morceau, alors qu'il faut décoder tout le début dans le cas d'un format compressé. Le fichier ''P.pl'', en présence d'une version WAV, la détectera à son extension de fichier et l'utilisera de préférence.
Note importante: si l'on a décodé le média compressé (au format ''.ogg'' par exemple) en le transformant en ''.wav'', la réactivité sera instantanée au lieu d'être de plus en plus longue: en effet, le format WAV permet au lecteur de se rendre directement au bon endroit du morceau, alors qu'il faut décoder tout le début dans le cas d'un format compressé. Le fichier ''P.pl'', en présence d'une version WAV, la détectera à son extension de fichier et l'utilisera de préférence.
Ligne 266 : Ligne 279 :
Ceci produit le fichier de [data/02/2002-11-27-Brevets-Radio-Campus.txt ''rushes'']. Les ''timecodes'' pourront être exploités dans une application web ou autre, pour faire le lien entre la bande son et la transcription textuelle.
Ceci produit le fichier de [data/02/2002-11-27-Brevets-Radio-Campus.txt ''rushes'']. Les ''timecodes'' pourront être exploités dans une application web ou autre, pour faire le lien entre la bande son et la transcription textuelle.


On transforme facilement le fichier de ''rushes'' en [data/03/2002-11-27-Brevets-Radio-Campus.txt version texte brut] un peu plus propre, avec le filtre [bin/Rush_to_TXT.sh Rush_to_TXT.sh]. Ligne de commande: ''sh Rush_to_TXT.sh rushes.txt &gt; texte.txt''.
On transforme facilement le fichier de ''rushes'' en [data/03/2002-11-27-Brevets-Radio-Campus.txt version texte brut] un peu plus propre, avec le filtre [http://www.april.org/files/Rush_to_TXT.sh Rush_to_TXT.sh]. Ligne de commande: ''sh Rush_to_TXT.sh rushes.txt &gt; texte.txt''.
 
=== Modes opératoires pour télécharger des documents particuliers ===
 
On évitera autant que possible la sauvegarde à partir d'un flux (''mplayer -dumpstream'') car elle est tributaire du réseau et peut induire des sauts dans la fluidité. Peu importe que le téléchargement d'une vidéo de 30 minutes prenne 40 minutes; c'est une opération asynchrone et la qualité importe.
 
==== Journal télévisé de TF1 ====
 
* Ouvrir le [http://www.tf1.fr/ le site web]. Cliquer sur «JT».
* Depuis la page [http://videos.tf1.fr/video/news/ ainsi obtenue], cliquer sur «La dernière édition du journal télévisé».
* Choisir le jour et l'heure (note: il y a une latence à la mise en ligne) puis cliquer sur «OK».
* Dans la fenêtre qui s'ouvre, sauvegarder le code HTML dans un fichier.
* Y rechercher une chaîne de la forme:
<pre>
&lt;PARAM NAME="SRC" VALUE="http://s.tf1.fr/FluxJt/jt20d18072007/jt20d18072007.asx"&gt;&lt;/PARAM&gt;
</pre>
* C'est un fichier texte court:
<pre>
$ w3m -dump http://s.tf1.fr/FluxJt/jt20d18072007/jt20d18072007.asx
mms://streamtf1.yacast.net/tf1jt/jt20d18072007.asf
</pre>
* Il suffit alors d'invoquer ''mimms'' sur cette dernière URL:
<pre>
$ mimms mms://streamtf1.yacast.net/tf1jt/jt20d18072007.asf
</pre>
* Note: le format étant simple et lié à la date, on peut tenter de fabriquer directement l'URL.
 
==== Journaux télévisés de France&nbsp;2 ou France&nbsp;3 ====
 
La méthode est la même. Détaillons le cas de France&nbsp;3.
 
* Se rendre sur la [http://jt.france3.fr/1920/ page du journal télévisé].
* Dans le code HTML, repérer une chaîne de la forme (je l'ai coupée pour les besoins de la présentation):
<pre>
&lt;script src="http://videojts.francetv.fr/player/script.php?pn=VideoPlayer&amp;
url=http%3A%2F%2Fvideojts.francetv.fr%2Fpublicite%2Fjt-asx.php%3Fchaine%3D
3%26url%3Dmms%3A%2F%2Fsdmc.contents.edgestreams.net%2Fhorsgv%2Fregions%2Fs
iege%2Finfos%2Ff3%2F1920%2FHD_1920_20070515.wmv&amp;w=320&amp;h=309&amp;sc=1&amp;as=1&amp;aas=
1&amp;tas=1&amp;ssb=1&amp;ecm=1&amp;acds=1&amp;asz=1&amp;ds=2&amp;hb=0&amp;ecm=1"&gt;&lt;/script&gt;
</pre>
* En extraire l'URL en ''mms://'' qui nous intéresse:
<pre>
mms%3A%2F%2Fsdmc.contents.edgestreams.net%2Fhorsgv%2Fregions%2Fsiege%2Finfos%2Ff3%2F1920%2FHD_1920_20070515.wmv
</pre>
* Certains caractères sont échappés, et remplacés par leur code hexadécimal précédé de ''%''. Le filtre Perl suivant produira le résultat recherché:
<pre>
#! /usr/bin/perl -w
use strict;
while (&lt;&gt;) {
  my $tmp = $_;
  $tmp =~ s{%([\da-f][\da-f])}{chr(hex($1))}gseix;
  print $tmp;
}
</pre>
* ... à savoir:
<pre>
mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/1920/HD_1920_20070515.wmv
</pre>
* Pour obtenir le texte de description du sujet qui nous intéresse:
* Clic droit dans la zone
* Choisir ''This Frame.../ Save This Frame As...''
* Il suffit alors d'invoquer un navigateur en mode texte comme ''w3m'' sur le fichier ainsi obtenu et de réaliser un copier-coller.
* Note: le format de l'URL de la vidéo étant simple et lié à la date, on peut tenter de fabriquer directement l'URL.
 
==== Format général des URL des journaux télévisés ====
 
'''Note''': Penser à sauvegarder les sommaires aux côtés du fichier de vidéo, ce qui facilitera plus tard le travail de repérage.
 
* TF1 (attention: si on tarde trop à choisir un autre jour et que la vidéo du jour a déjà commencé, Iceweasel plante; cela ne fonctionne pas avec w3m):
** Note: le jour même, apparemment, remplacer ''streamtf1.yacast.net'' par ''vodstream.tf1.fr''; après quelque temps l'adresse change, mais les vidéos ne sont pas accessibles très longtemps.
** 13h: ''mms://streamtf1.yacast.net/tf1jt/jt13d20092007.asf''
** 20h: ''mms://streamtf1.yacast.net/tf1jt/jt20d20092007.asf''
** Pour les titres, il faut naviguer et sauvegarder au cas par cas car un numéro long apparaît et je n'ai pas encore compris comment le prédire. Exemple: ''0,,3549625,00-journal-televise-septembre-2007-20h-.html''
 
* France 2:
** 8h (vidéo) : ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f2/8h/HD_8h_20070918.wmv''
** 13h (vidéo) : ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f2/13h/HD_13h_20070917.wmv''
** 13h (titres et descriptions) : ''http://jt.france2.fr/13h/html_generated/iframe_3.php?start=0'' où ''3'' représente l'écart avec la date du dernier journal publié, en jours (maximum 6)
** 20h (vidéo) : ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f2/20h/HD_20h_20070917.wmv''
** 20h (titres et descriptions) : ''http://jt.france2.fr/20h/html_generated/iframe_3.php?start=0'' où ''3'' représente l'écart avec la date du dernier journal publié, en jours (maximum 6)
 
* France 3 (édition nationale):
** 12-13 (vidéo) : ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/1214/HD_1214_20070917.wmv''
** 12-13 (titres et descriptions) : ''http://jt.france3.fr/1213/html_generated/iframe_3.php?start=0'' où ''3'' représente l'écart avec la date du dernier journal publié, en jours (maximum 6)
** 19-20 (vidéo) : ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/1920/HD_1920_20070917.wmv''
** 19-20 (titres et descriptions) : ''http://jt.france3.fr/1920/html_generated/iframe_3.php?start=0'' où ''3'' représente l'écart avec la date du dernier journal publié, en jours (maximum 6)
* Soir 3 (vidéo): ''mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/soir3/HD_soir3_20070917.wmv''
 
=== Changer l'encodage ou le format d'un document multimédia ===
 
Attention! La plupart des transformations détruisent de l'information ou de la qualité de signal. Même si le format original n'est pas «ouvert», tant qu'il est lisible avec des logiciels libres, on pourra éviter de le dégrader.
 
Cette section évoluera au fur et à mesure des connaissances présentées et de ma compréhension du problème. Pour l'instant elle présente un cas particulier.
 
Quand on dispose en entrée de ceci:
* 3 à 4 Go de données
* au format MPEG-TV (ou plutôt du PAL 576i en MPEG-2)
* issues de carte Tunet TNT USB Hauppauge
 
Et qu'on cherche à obtenir:
* la même chose
* dans un format plus léger (Ogg Theora?)
* sans trop de perte de données
 
La réponse est en gros toujours la même: réencoder en Xvid ou en H.264. Ici il faudra probablement penser à ajouter un filtre de désentrelacement convenable en plus du filtre de débruitage.
 
La ligne de commande débutera comme suit:
<pre>
mencoder -nosound -vo xvid -vf scale=1024x576,pp=fd,hqdn3d \
        -xvidencopts ...
</pre>
 
Exemple détaillé:
 
Le fichier fait 703 Mo, le fichier original faisait 3.5 Go.
 
Voici les lignes de commandes. La qualité finale est bonne mais l'encodage est très très lent. Le fichier d'entrée est un MPEG-PS en 720x576.
 
<pre>
mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
    bitrate=687:pass=1 -oac mp3lame -o /dev/null video-in.mpg
</pre>
 
<pre>
mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
    bitrate=687:pass=2 -oac mp3lame -o video-out.avi video-in.mpg
</pre>
 
Suivent le log de ces deux commandes. Il y a des messages d'erreurs ou des warnings, mais la qualité et l'aspect ratio sont corrects.
 
<pre>
$ mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
  bitrate=687:pass=1 -oac mp3lame -o /dev/null foobar.mpg*
MEncoder dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (Family: 15, Model: 3, Stepping: 4)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0  data: 0x0 - 0xdc212800
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  15000.0 kbps (1875.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000-&gt;192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
xvid: using library version 1.1.2 (build xvid-1.1.2)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [hqdn3d]
Opening video filter: [pp=fd]
Opening video filter: [scale w=1024]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
[PP] Using external postprocessing filter, max q = 6.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
MP3 audio selected.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 5 -&gt; 4
SwScaler: reducing / aligning filtersize 5 -&gt; 4
SwScaler: reducing / aligning filtersize 1 -&gt; 1
SwScaler: reducing / aligning filtersize 1 -&gt; 1
[swscaler @ 0x836c4d0]SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
[swscaler @ 0x836c4d0]SwScaler: using 1-tap MMX "scaler" for vertical scaling (YV12 like)
[swscaler @ 0x836c4d0]SwScaler: 720x576 -&gt; 1024x576
videocodec: XviD (1024x576 fourcc=44495658 [XVID])
xvid: par=0/0 (vga11), displayed=1024x768, sampled=1024x576
xvid: bitrate setting is ignored during first pass
xvid: 2Pass Rate Control -- 1st pass
New_Face failed. Maybe the font path is wrong.n  0mb  A-V:0.004 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
 
1 duplicate frame(s)!
Pos:  0.8s    22f ( 0%) 21.87fps Trem:  0min  0mb  A-V:0.082 [0:161]
Skipping frame!
ODML: Starting new RIFF chunk at 1023MB.  85min 3025mb  A-V:-0.012
[3346:179]
ODML: Starting new RIFF chunk at 2047MB.  38min 2979mb  A-V:-0.012
[3554:176]
Pos:6768.4s 169215f (100%) 22.90fps Trem:  0min 3018mb  A-V:-0.012
[3557:175]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
 
Video stream: 3557.504 kbit/s  (444687 B/s)  size: 3009879524 bytes
6768.520 secs  169215 frames
 
Audio stream:  175.876 kbit/s  (21984 B/s)  size: 148806168 bytes
6768.696 secs
</pre>
Et pour la deuxième commande:
 
<pre>
$ mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts
bitrate=687:pass=2 -oac mp3lame -o foobar.avi foobar.mpg*
MEncoder dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (Family: 15, Model: 3, Stepping: 4)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0  data: 0x0 - 0xdc212800
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  15000.0 kbps (1875.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000-&gt;192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
xvid: using library version 1.1.2 (build xvid-1.1.2)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [hqdn3d]
Opening video filter: [pp=fd]
Opening video filter: [scale w=1024]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
[PP] Using external postprocessing filter, max q = 6.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
MP3 audio selected.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 5 -&gt; 4
SwScaler: reducing / aligning filtersize 5 -&gt; 4
SwScaler: reducing / aligning filtersize 1 -&gt; 1
SwScaler: reducing / aligning filtersize 1 -&gt; 1
[swscaler @ 0x836c4d0]SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
[swscaler @ 0x836c4d0]SwScaler: using 1-tap MMX "scaler" for vertical scaling (YV12 like)
[swscaler @ 0x836c4d0]SwScaler: 720x576 -&gt; 1024x576
videocodec: XviD (1024x576 fourcc=44495658 [XVID])
xvid: par=0/0 (vga11), displayed=1024x768, sampled=1024x576
xvid: 2Pass Rate Control -- 2nd pass -- bitrate=687kbit/s
New_Face failed. Maybe the font path is wrong.n  0mb  A-V:0.004 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
 
1 duplicate frame(s)!
Pos:  0.8s    22f ( 0%) 11.52fps Trem:  0min  0mb  A-V:0.082 [0:161]
Skipping frame!
Pos:6768.4s 169215f (100%) 14.50fps Trem:  0min 695mb  A-V:-0.012 [682:175]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Video stream:  682.107 kbit/s  (85263 B/s)  size: 577106446 bytes
6768.520 secs  169215 frames
 
Audio stream:  175.876 kbit/s  (21984 B/s)  size: 148806168 bytes
6768.696 secs
</pre>
 
 
==== Couper un morceau d'une vidéo ====
 
Exemple: journal télévisé.
* On prend le WMV d'origine
* On le «streamdumpe» par mplayer
* On le découpe avec la commande:
<pre>
mencoder ''source''.wmv -oac copy -ovc copy -ss 00:07:17 -endpos 00:00:24 -o ''fichier_de_la_bonne_longueur''.wmv
</pre>
 
==== Sauvegarder en local une vidéo introduite par un programme Flash ====
 
Plusieurs cas sont possibles:
* Cas général: le site [http://keepvid.com/ Keepvid] propose une méthode générale pour les sites principaux (mais cela ne semble pas fonctionner chez moi; peut-être à cause de mes réglages réseau particuliers?).
 
* Cas particulier: '''vidéo située sur le site YouTube'''
 
Le paquet Debian ''youtube-dl'' (attention à le prendre dans sa dernière version, Debian ''unstable'', car le site web change parfois son système) rapatriera le fichier vidéo si on lui donne l'URL (dont plusieurs formes sont possibles). Exemple d'utilisation:
<pre>youtube-dl http://youtube.com/watch?v=dMH0bHeiRNg</pre>
 
Ceci produit le fichier ''dMH0bHeiRNg.flv'', lisible avec ''mplayer''.
 
* Cas particulier: '''vidéo située sur le site MetaCafe'''
 
Le paquet Debian ''metacafe-dl'' (attention à le prendre dans une version récente, Debian ''unstable'' par exemple, car le site web change parfois son système) rapatriera le fichier vidéo si on lui donne l'URL (dont plusieurs formes sont possibles). Exemple d'utilisation:
<pre>metacafe-dl http://www.metacafe.com/watch/40191/animals_vs_humans/</pre>
 
Ceci produit le fichier ''40191.flv'', lisible avec ''mplayer''.
 
* Cas général: '''Vidéo chargée par un programme Flash'''
 
Il existe plusieurs types de programmes Flash, et les techniques changent en fonction.
 
* Méthodologie pour [http://www.maniacworld.com/most-intense-commercial-ever.html cette pub sur Maniac World] :
* Avoir installé le paquet ''swfdec-mozilla'' (existe chez Debian; sa version 0.5.2-1 suffit) avant de démarrer le navigateur (Iceweasel)
** Clic droit dans la zone de la vidéo: activer ''Playing''
** Attendre que le programme s'exécute et que la vidéo démarre
** Clic droit: désactiver ''Playing''
** Clic droit: ''Properties''
** agrandir la fenêtre ''pop-up'' qui apparaît
* On observe un média vidéo (''Type: Flash Video''; ''Flash Movie'' est le programme chargeur Flash en lui-même)
* Attendre la fin du chargement du fichier FLV (100%) puis cliquer sur sa ligne et choisir ''Save media as''
* On peut aussi copier son lien (je n'ai pas trouvé comment l'insérer dans le tampon avec ce toolkit) pour le [http://www.wacklepedia.com/flv/most-intense-commercial-ever.flv récupérer à part].
 
* Méthodologie pour [http://www.ratiatum.com/breve5671_P2P_Neuf_Cegetel_favorable_aux_pieges_a_souris_et_aux_amendes.html cette interview sur Ratiatum.com] (cette méthode fonctionne aussi pour les vidéos du site [http://www.veoh.com/ veoh], où cette vidéo est en fait hébergée):
* Avoir installé le paquet ''swfdec-mozilla'' (existe chez Debian; sa version 0.5.2-1 suffit) avant de démarrer le navigateur (Iceweasel)
** Clic droit dans la zone de la vidéo: activer ''Playing''
** Attendre que le programme s'exécute et que la vidéo démarre
** Clic droit: désactiver ''Playing''
** Clic droit: ''Properties''
** agrandir la fenêtre ''pop-up'' qui apparaît
* On n'observe pas de média vidéo (''Type: Flash Video''; ''Flash Movie'' est le programme chargeur Flash en lui-même)
* C'est le média de ''Type: Text'' qui compte. Attendre la fin du chargement (100%) puis cliquer sur sa ligne et choisir ''Save media as''
* On peut aussi copier son lien (je n'ai pas trouvé comment l'insérer dans le tampon avec ce toolkit) pour le [http://www.veoh.com/rest/video/v1143821sfh7d8Xf/details récupérer à part].
* Dans ce fichier on remarque:
<pre>
fullPreviewHashPath="''http://content.veoh.com/flash/p/1143821/c19d20cb888f6297229a49890ac44dd4f5d115f7.flv?ct=bf9a5fe7a290e1daa8b27ab27b1f2eaf0b55f93e48ebbc33''"
</pre>
* C'est l'URL à rapatrier (y compris le code final, sinon on prend un ''403 Forbidden'')
 
* Méthodologie pour [http://www.dailymotion.com/ Dailymotion] : aucune solution sur poste client (à base de logiciels libres) n'a été trouvée à ce jour. Si vous en connaissez une, n'hésitez surtout pas à nous en faire part ! Avec yt-dlp 'URL de la vidéo'.
<nowiki>Entrez le texte non formaté ici</nowiki>

Dernière version du 29 mai 2023 à 10:08


Tutoriel du groupe Transcriptions[modifier]

Modes opératoires et conseils techniques[modifier]

Liens et programmes utiles[modifier]

  • Mplayer lit la plupart des formats vidéo utilisés; je ne pense pas qu'un autre programme libre en lise certains que lui ne sait pas lire. Il est (désormais) packagé par Debian. Il y a apparemment des questions compliquées de codes disponibles mais pas libres.
  • Un navigateur web en mode texte comme w3m (packagé par Debian) est parfois bien pratique.
  • Les URL débutant par itpc://... ??? TODO. Exemple: 1 sur la page 2.
  • Les URL débutant par mms:// se téléchargent avec le programme mimms (packagé par Debian).
  • Les URL débutant par rtsp://... Apparemment le paquet Debian livemedia-utils et son programme openRTSP se chargent de cela, mais je n'ai pas réussi à le faire fonctionner. ??? TODO. Exemple: [rtsp://212.95.67.121:554/permanent/c6/promos/070619_fr.rmvb?cloakport=80,554,7070 1] vu sur 2 vu sur 3.
  • Un flux RSS mentionne l'URL du média. Exemple: 1 trouvé sur la page 2 mentionne 3 (lien désormais cassé...).
  • Les URL débutant par pnm://...??? TODO Exemple: [pnm://212.95.67.121:7070/permanent/c6/promos/070619_fr.rmvb?cloakport=80,554,7070 1] vu sur 2 vu sur 3.
  • TODO: comment télécharger les vidéos annoncées au format RealPlayer? Exemple: 1 trouvé sur la page 2.
  • Validation XHTML.
  • Validation CSS.

Méthode générale[modifier]

Traitons par exemple le cas d'un podcast.

Utiliser le navigateur Firefox et installer l'extension Firebug.

Dans la sous-fenêtre de Firebug, onglet Net, on voit dans la liste un nom de fichier (nom_de_fichier.mp3). Clic droit, Copy Location. Ça semble fonctionner avec Youtube et de nombreux sites.

Description plus détaillée: Télécharger n'importe quel contenu sur les sites de diffusions de vidéos et MP3.

Connaître la durée d'un document[modifier]

Format Extension Commande
Ogg Vorbis ou Ogg Theora .ogg ogginfo
MPEG, AVI .mp3, .mp4, .mpg, .avi mplayer -identify; chercher ID_LENGTH (valeur exprimée en secondes); ne disposer que du début du fichier suffit parfois
Général .xxx Approximation avec: time player fichier

Programmes d'assistance à la transcription[modifier]

Trans[modifier]

Le programme trans du paquet Debian transcriber semble riche et prometteur. Si quelqu'un apprend à s'en servir et peut expliquer comment procéder efficacement, ses conseils seront les bienvenus (TODO). Attention, la page web du projet donnée dans la documentation a disparu; le projet est désormais hébergé sur Sourceforge.

Remplacé par TranscriberAG sous licence GPLv3.

Programme temporel simple[modifier]

Le programme Play.pl permet de jouer des petites portions (intervalles) d'un média afin de les transcrire au fur et à mesure. Il dispose d'options d'ergonomie. Il joue le fichier indiqué dans la variable d'environnement MEDIA_FILE. Les valeurs des variables utilisées sont rappelées dans un xmessage.

On pourra l'interfacer avec l'éditeur de textes VIM en insérant les lignes suivantes dans son fichier de configuration:

" To use for transcriptions
:map <F1> !!perl ~/bin/Play.pl GotoPreviousInterval<CR>
:map <F2> !!perl ~/bin/Play.pl PlayCurrentInterval<CR>
:map <F3> !!perl ~/bin/Play.pl PlayNextInterval<CR>A
:map <F4> !!perl ~/bin/Play.pl GotoNextInterval<CR>A
:map <F5> !!perl ~/bin/Play.pl ShortenIntervalLength<CR>
:map <F6> !!perl ~/bin/Play.pl ShortenOverlapLength<CR>
:map <F7> !!perl ~/bin/Play.pl LengthenOverlapLength<CR>
:map <F8> !!perl ~/bin/Play.pl LengthenIntervalLength<CR>
:map <F9> !!perl ~/bin/Play.pl ReduceSpeed<CR>
:map <F10> !!perl ~/bin/Play.pl AccelerateSpeed<CR>
:map <F11> !!perl ~/bin/Play.pl ForwardTwoSeconds<CR>
:map <F12> !!perl ~/bin/Play.pl MarkUpOffset<CR>

Ceci mettra en place les effets suivants:

Touche Commande Effet
F1 GotoPreviousInterval Recule d'un intervalle.
F2 PlayCurrentInterval (Re)joue l'intervalle actuel.
F3 PlayNextInterval Joue l'intervalle suivant sans y avancer.
F4 GotoNextInterval Avance d'un intervalle.
F5 ShortenIntervalLength Réduit d'une seconde la durée de l'intervalle (durée minimale: 1 seconde).
F6 ShortenOverlapLength Réduit d'une seconde le recouvrement entre deux intervalles (durée minimale: 1 seconde).
F7 LengthenOverlapLength Augmente d'une seconde le recouvrement entre deux intervalles (durée maximale: celle de l'intervalle).
F8 LengthenIntervalLength Augmente d'une seconde la durée de l'intervalle (durée maximale: durée totale).
F9 ReduceSpeed Réduit la vitesse de 5% (vitesse minimale: 50%) et arrondit à 1 si on est 1 plus ou moins 3%.
F10 AccelerateSpeed Augmente la vitesse de 5% (vitesse maximale: 2) et arrondit à 1 si on est 1 plus ou moins 3%.
F11 ForwardTwoSeconds Avance de deux secondes.
F12 MarkUpOffset Insère le timecode actuel dans la transcription.

Note: VIM n'est en rien imposé ou nécessaire; la plupart des autres éditeurs de texte programmables pourront eux aussi être raccordés au programme Play.pl. Communiquez-moi les instructions de configuration et je les mentionnerai ici.

ELAN (EUDICO Linguistic Annotator)[modifier]

Je teste ce logiciel depuis une petite semaine.

ELAN est un logiciel d’annotation multimédia (sons et vidéo) qui dispose de vues adaptées pour la segmentation et la transcription ainsi que d’outils de segmentation automatique.

Ma modeste pratique m’a, pour l’instant, permis de dégager 4 étapes : la conversion éventuelle des médias (pour afficher la forme d’onde d’une piste audio, celle-ci doit être au format "wav"), une segmentation automatique préliminaire, une écoute globale (éventuellement à vitesse rapide) permettant de se familiariser avec le contenu et d’ajuster les segments (redécoupage, assemblage, suppression, etc.) et, enfin, la transcription.

Dans la vue adaptée à la transcription, chaque segment est associé à une case de saisie textuelle et est synchronisé avec un passage des médias. Le passage d’une case à l’autre déplace la tête de lecture sur la portion des médias correspondante (lecture automatique ou déclenchée manuellement). On dispose de l’option de lecture en boucle et de la possibilité de changer la vitesse de lecture.

Un autre élément qui me semble intéressant est la possibilité de synchroniser plusieurs textes. J’ai envisagé de profiter de cette facilité pour faire une première passe de transcription fidèle avec, en vis-à-vis et dans un second temps, une reformulation plus fluide. Le tout en conservant le lien aux médias pour faciliter les relectures et les reprises.

Programme syllabique plus évolué[modifier]

Cette méthode analyse dans un premier temps le fichier sonore pour repérer les silences le ponctuant et y compter les syllabes. Elle repose sur le fait que SoX, à partir de sa version 14, est capable de jouer des portions de bande son découpées au centième de seconde près.

L'ensemble se compose de trois éléments:

  1. Un programme C, qui analyse le fichier son (au format WAV 16 bits). On le compile sans difficulté particulière, par exemple avec gcc -Wall -O2 -o w wav.c.
  2. Un script Perl, qui exploite les données produites pour en jouer les portions repérées une à une.
  3. Quelques lignes de configuration instrumentant l'éditeur de texte employé pour faire appel à ce script.

Méthode opératoire pour appliquer le découpage syllabique[modifier]

Méthode opératoire (on ne détaille pas les répertoires de stockage et chemins d'accès, ces choix étant laissés libres et ces notions supposées connues):

  1. Télécharger le fichier son (exemple utilisé ici: FreeSoft.ogg).
  2. Le convertir au format WAV 16 bits.
    1. On peut faire appel au programme oggdec (paquet Debian vorbis-tools): oggdec fichier.ogg
  3. Repérer les syllabes et silences de ce fichier: ./w FreeSoft.wav | tee TIMECODES.txt.

Ce dernier calcul dépend des choix de constantes faits dans w.c. Avec les réglages suivants:

#define MAX_SILENCE (1.0)       /* Always cut when silences that long (in seconds) */
#define MAX_DURATION  20        /* Maximum duration of the chunk to listen (in seconds) */

#define MIN_SYLLABLES 20        /* Minimum number of syllables to listen to (precedence smaller than MAX_SILENCE) */
#define MAX_SYLLABLES 40        /* Maximum number of syllables to listen to */

#define ENERGY_LEVELS 30            /* Range where we will map energy levels (ignoring the zero as silences) */
#define PER_SECOND_GRANULARITY 100  /* Basic time length */
#define MAX_SYLLABLES_PER_SECOND 10 /* Maximum speech rate */

On obtiendra plus de mille lignes:

0.00 5.31 5.31 0.42 35
5.31 11.24 5.93 0.72 35
11.24 17.84 6.60 0.43 33
17.84 29.56 11.72 1.64 33
[...]
5681.41 5688.26 6.85 0.23 40 
5688.26 5694.88 6.62 0.40 37
5694.88 5699.70 4.82 0.63 30
5699.70 5700.89 1.19 0.00 40

On incorpore ces lignes sous la ligne __DATA__ dans le fichier P.pl. Note: dans ce fichier une commande produit un bip pour clarifier les séparations (le fichier /usr/share/sounds/KDE_Beep_Pop.wav relève du paquet Debian kdebase-data):

my $beep = "play /usr/share/sounds/KDE_Beep_Pop.wav;";

On règle l'éditeur de textes (dans cet exemple nous détaillerons le cas de VIM) comme suit:

" Start the chunk
:map <F1> :.,$!perl P.pl<CR>
" 1 more second of overlap in the beginning
:map <F12> :.,$!perl PP.pl<CR>o
" Tag afterwards: type this on the first line of the rest of the transcription
:map <F8> Gdd''P<F1>
:syntax match TimeCode /^\[\[[0-9].*$/
:highlight TimeCode ctermfg=DarkGreen

" Cut word before cursor
:map <F5> i...<CR>...<ESC>

" Check mode
:map <F2> !!perl P.pl<CR>jdd
" Check mode, with more overlap
:map <F11> !!perl PP.pl<CR>o

" Wraps the current word (>= 2 letters) with "*"
:map <F9> hebi*<ESC>ea*<ESC>

On pourra sauvegarder ces quelques lignes dans un fichier transcription.vim. La première, qui définit le comportement de la touche F1, indique notamment à l'éditeur de textes VIM de transmettre au programme P.pl toute la suite du fichier, à partir de la ligne courante, jusqu'à la fin.

Note: on appelle timecode un marqueur temporel de type hh:mm:ss.cc (heures, minutes, secondes, centièmes; les heures et minutes ne sont pas toujours précisées quand elles sont nulles.

La touche F1 sert alors à la transcription (et les touches F2 ou F8 à l'insertion de timecodes dans les fichiers déjà transcrits; F11 ajoutant une seconde de contexte sonore au début). La touche F12 donne un peu plus de contexte au début de l'extrait courant. La touche F9 encadre le mot courant, s'il compte plus de deux lettres, d'astérisques.

La touche F5 coupe le mot en cours par des points de suspension:

comme ce...
[[ hh:mm:ss]] # ''ceci est une mention de timecode''
...ci

si cela correspond à une borne du morcellement sonore; ce mot sera recollé ensuite par le programme <a href="http://www.april.org/files/Rush_to_TXT.sh">Rush_to_TXT.sh</a>.

Note importante: si l'on a décodé le média compressé (au format .ogg par exemple) en le transformant en .wav, la réactivité sera instantanée au lieu d'être de plus en plus longue: en effet, le format WAV permet au lecteur de se rendre directement au bon endroit du morceau, alors qu'il faut décoder tout le début dans le cas d'un format compressé. Le fichier P.pl, en présence d'une version WAV, la détectera à son extension de fichier et l'utilisera de préférence.

On met en place la variable d'environnement MEDIA_FILE pour renvoyer sur le fichier FreeSoft.ogg:

export MEDIA_FILE=FreeSoft.ogg

Alors, on peut débuter la transcription comme suit: vim -S transcription.vim FreeSoft.txt, dans un terminal de préférence sur fond sombre (par exemple un xterm en blanc sur noir — dans le cas contraire on pourra intervenir sur le réglage de couleur DarkGreen):

[[00.00]] syl=35 sil=0.42
[[05.32]]

Ces lignes apparaissent en vert foncé. La première indique: on débute à la seconde 0. C'est le début d'une séquence de 35 syllabes, terminée par un blanc de 42 centièmes de seconde, qui prendra fin au timecode 5.31. On peut réécouter la séquence en enfonçant à nouveau la touche F1. Le bip de fin marque la fin du blanc, et précède un petit temps de recouvrement réglé dans P.pl. La touche o sous VIM permet de réaliser la transcription de cette portion:

[[00.00]] syl=35 sil=0.42
Denis Devos: Vous écoutez Radio Campus, la radio de la communauté de
l'université libre de Bruxelles. Il est 10:18.
[[05.32]]

On presse ensuite la touche d'échappement ESC, se place sur le timecode suivant (05.32), et une nouvelle pression sur F1 produit:

[[05.31]] syl=35 sil=0.72
[[11.25]]

On procède ainsi de proche en proche jusqu'à la fin de la transcription. Pour noter un changement d'interlocuteur ou un nouveau paragraphe, on passe une ligne (avant ou après le timecode, ou entre deux timecodes, selon les cas. On veillera à laisser les timecodes toujours seuls sur leur ligne, et prendra garde à ne pas passer plusieurs lignes.

Ceci produit le fichier de [data/02/2002-11-27-Brevets-Radio-Campus.txt rushes]. Les timecodes pourront être exploités dans une application web ou autre, pour faire le lien entre la bande son et la transcription textuelle.

On transforme facilement le fichier de rushes en [data/03/2002-11-27-Brevets-Radio-Campus.txt version texte brut] un peu plus propre, avec le filtre Rush_to_TXT.sh. Ligne de commande: sh Rush_to_TXT.sh rushes.txt > texte.txt.

Modes opératoires pour télécharger des documents particuliers[modifier]

On évitera autant que possible la sauvegarde à partir d'un flux (mplayer -dumpstream) car elle est tributaire du réseau et peut induire des sauts dans la fluidité. Peu importe que le téléchargement d'une vidéo de 30 minutes prenne 40 minutes; c'est une opération asynchrone et la qualité importe.

Journal télévisé de TF1[modifier]

  • Ouvrir le le site web. Cliquer sur «JT».
  • Depuis la page ainsi obtenue, cliquer sur «La dernière édition du journal télévisé».
  • Choisir le jour et l'heure (note: il y a une latence à la mise en ligne) puis cliquer sur «OK».
  • Dans la fenêtre qui s'ouvre, sauvegarder le code HTML dans un fichier.
  • Y rechercher une chaîne de la forme:
<PARAM NAME="SRC" VALUE="http://s.tf1.fr/FluxJt/jt20d18072007/jt20d18072007.asx"></PARAM>
  • C'est un fichier texte court:
$ w3m -dump http://s.tf1.fr/FluxJt/jt20d18072007/jt20d18072007.asx
mms://streamtf1.yacast.net/tf1jt/jt20d18072007.asf
  • Il suffit alors d'invoquer mimms sur cette dernière URL:
$ mimms mms://streamtf1.yacast.net/tf1jt/jt20d18072007.asf
  • Note: le format étant simple et lié à la date, on peut tenter de fabriquer directement l'URL.

Journaux télévisés de France 2 ou France 3[modifier]

La méthode est la même. Détaillons le cas de France 3.

  • Se rendre sur la page du journal télévisé.
  • Dans le code HTML, repérer une chaîne de la forme (je l'ai coupée pour les besoins de la présentation):
<script src="http://videojts.francetv.fr/player/script.php?pn=VideoPlayer&
url=http%3A%2F%2Fvideojts.francetv.fr%2Fpublicite%2Fjt-asx.php%3Fchaine%3D
3%26url%3Dmms%3A%2F%2Fsdmc.contents.edgestreams.net%2Fhorsgv%2Fregions%2Fs
iege%2Finfos%2Ff3%2F1920%2FHD_1920_20070515.wmv&w=320&h=309&sc=1&as=1&aas=
1&tas=1&ssb=1&ecm=1&acds=1&asz=1&ds=2&hb=0&ecm=1"></script>
  • En extraire l'URL en mms:// qui nous intéresse:
mms%3A%2F%2Fsdmc.contents.edgestreams.net%2Fhorsgv%2Fregions%2Fsiege%2Finfos%2Ff3%2F1920%2FHD_1920_20070515.wmv
  • Certains caractères sont échappés, et remplacés par leur code hexadécimal précédé de %. Le filtre Perl suivant produira le résultat recherché:
#! /usr/bin/perl -w
use strict;
while (<>) {
  my $tmp = $_;
  $tmp =~ s{%([\da-f][\da-f])}{chr(hex($1))}gseix;
  print $tmp;
}
  • ... à savoir:
mms://sdmc.contents.edgestreams.net/horsgv/regions/siege/infos/f3/1920/HD_1920_20070515.wmv
  • Pour obtenir le texte de description du sujet qui nous intéresse:
  • Clic droit dans la zone
  • Choisir This Frame.../ Save This Frame As...
  • Il suffit alors d'invoquer un navigateur en mode texte comme w3m sur le fichier ainsi obtenu et de réaliser un copier-coller.
  • Note: le format de l'URL de la vidéo étant simple et lié à la date, on peut tenter de fabriquer directement l'URL.

Format général des URL des journaux télévisés[modifier]

Note: Penser à sauvegarder les sommaires aux côtés du fichier de vidéo, ce qui facilitera plus tard le travail de repérage.

  • TF1 (attention: si on tarde trop à choisir un autre jour et que la vidéo du jour a déjà commencé, Iceweasel plante; cela ne fonctionne pas avec w3m):
    • Note: le jour même, apparemment, remplacer streamtf1.yacast.net par vodstream.tf1.fr; après quelque temps l'adresse change, mais les vidéos ne sont pas accessibles très longtemps.
    • 13h: mms://streamtf1.yacast.net/tf1jt/jt13d20092007.asf
    • 20h: mms://streamtf1.yacast.net/tf1jt/jt20d20092007.asf
    • Pour les titres, il faut naviguer et sauvegarder au cas par cas car un numéro long apparaît et je n'ai pas encore compris comment le prédire. Exemple: 0,,3549625,00-journal-televise-septembre-2007-20h-.html

Changer l'encodage ou le format d'un document multimédia[modifier]

Attention! La plupart des transformations détruisent de l'information ou de la qualité de signal. Même si le format original n'est pas «ouvert», tant qu'il est lisible avec des logiciels libres, on pourra éviter de le dégrader.

Cette section évoluera au fur et à mesure des connaissances présentées et de ma compréhension du problème. Pour l'instant elle présente un cas particulier.

Quand on dispose en entrée de ceci:

  • 3 à 4 Go de données
  • au format MPEG-TV (ou plutôt du PAL 576i en MPEG-2)
  • issues de carte Tunet TNT USB Hauppauge

Et qu'on cherche à obtenir:

  • la même chose
  • dans un format plus léger (Ogg Theora?)
  • sans trop de perte de données

La réponse est en gros toujours la même: réencoder en Xvid ou en H.264. Ici il faudra probablement penser à ajouter un filtre de désentrelacement convenable en plus du filtre de débruitage.

La ligne de commande débutera comme suit:

mencoder -nosound -vo xvid -vf scale=1024x576,pp=fd,hqdn3d \
         -xvidencopts ...

Exemple détaillé:

Le fichier fait 703 Mo, le fichier original faisait 3.5 Go.

Voici les lignes de commandes. La qualité finale est bonne mais l'encodage est très très lent. Le fichier d'entrée est un MPEG-PS en 720x576.

mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
    bitrate=687:pass=1 -oac mp3lame -o /dev/null video-in.mpg
mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
    bitrate=687:pass=2 -oac mp3lame -o video-out.avi video-in.mpg

Suivent le log de ces deux commandes. Il y a des messages d'erreurs ou des warnings, mais la qualité et l'aspect ratio sont corrects.

$ mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts \
  bitrate=687:pass=1 -oac mp3lame -o /dev/null foobar.mpg*
MEncoder dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (Family: 15, Model: 3, Stepping: 4)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0  data: 0x0 - 0xdc212800
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  15000.0 kbps (1875.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
xvid: using library version 1.1.2 (build xvid-1.1.2)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [hqdn3d]
Opening video filter: [pp=fd]
Opening video filter: [scale w=1024]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
[PP] Using external postprocessing filter, max q = 6.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
MP3 audio selected.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 1 -> 1
SwScaler: reducing / aligning filtersize 1 -> 1
[swscaler @ 0x836c4d0]SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
[swscaler @ 0x836c4d0]SwScaler: using 1-tap MMX "scaler" for vertical scaling (YV12 like)
[swscaler @ 0x836c4d0]SwScaler: 720x576 -> 1024x576
videocodec: XviD (1024x576 fourcc=44495658 [XVID])
xvid: par=0/0 (vga11), displayed=1024x768, sampled=1024x576
xvid: bitrate setting is ignored during first pass
xvid: 2Pass Rate Control -- 1st pass
New_Face failed. Maybe the font path is wrong.n   0mb  A-V:0.004 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.

1 duplicate frame(s)!
Pos:   0.8s     22f ( 0%) 21.87fps Trem:   0min   0mb  A-V:0.082 [0:161]
Skipping frame!
ODML: Starting new RIFF chunk at 1023MB.  85min 3025mb  A-V:-0.012
[3346:179]
ODML: Starting new RIFF chunk at 2047MB.  38min 2979mb  A-V:-0.012
[3554:176]
Pos:6768.4s 169215f (100%) 22.90fps Trem:   0min 3018mb  A-V:-0.012
[3557:175]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.

Video stream: 3557.504 kbit/s  (444687 B/s)  size: 3009879524 bytes
6768.520 secs  169215 frames

Audio stream:  175.876 kbit/s  (21984 B/s)  size: 148806168 bytes
6768.696 secs

Et pour la deuxième commande:

$ mencoder -ovc xvid -vf scale=1024,pp=fd,hqdn3d -xvidencopts
bitrate=687:pass=2 -oac mp3lame -o foobar.avi foobar.mpg*
MEncoder dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (Family: 15, Model: 3, Stepping: 4)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0  data: 0x0 - 0xdc212800
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  15000.0 kbps (1875.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
xvid: using library version 1.1.2 (build xvid-1.1.2)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [hqdn3d]
Opening video filter: [pp=fd]
Opening video filter: [scale w=1024]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
[PP] Using external postprocessing filter, max q = 6.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
MP3 audio selected.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 1 -> 1
SwScaler: reducing / aligning filtersize 1 -> 1
[swscaler @ 0x836c4d0]SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
[swscaler @ 0x836c4d0]SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
[swscaler @ 0x836c4d0]SwScaler: using 1-tap MMX "scaler" for vertical scaling (YV12 like)
[swscaler @ 0x836c4d0]SwScaler: 720x576 -> 1024x576
videocodec: XviD (1024x576 fourcc=44495658 [XVID])
xvid: par=0/0 (vga11), displayed=1024x768, sampled=1024x576
xvid: 2Pass Rate Control -- 2nd pass -- bitrate=687kbit/s
New_Face failed. Maybe the font path is wrong.n   0mb  A-V:0.004 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.

1 duplicate frame(s)!
Pos:   0.8s     22f ( 0%) 11.52fps Trem:   0min   0mb  A-V:0.082 [0:161]
Skipping frame!
Pos:6768.4s 169215f (100%) 14.50fps Trem:   0min 695mb  A-V:-0.012 [682:175]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.048s.
Video stream:  682.107 kbit/s  (85263 B/s)  size: 577106446 bytes
6768.520 secs  169215 frames

Audio stream:  175.876 kbit/s  (21984 B/s)  size: 148806168 bytes
6768.696 secs


Couper un morceau d'une vidéo[modifier]

Exemple: journal télévisé.

  • On prend le WMV d'origine
  • On le «streamdumpe» par mplayer
  • On le découpe avec la commande:
mencoder ''source''.wmv -oac copy -ovc copy -ss 00:07:17 -endpos 00:00:24 -o ''fichier_de_la_bonne_longueur''.wmv

Sauvegarder en local une vidéo introduite par un programme Flash[modifier]

Plusieurs cas sont possibles:

  • Cas général: le site Keepvid propose une méthode générale pour les sites principaux (mais cela ne semble pas fonctionner chez moi; peut-être à cause de mes réglages réseau particuliers?).
  • Cas particulier: vidéo située sur le site YouTube

Le paquet Debian youtube-dl (attention à le prendre dans sa dernière version, Debian unstable, car le site web change parfois son système) rapatriera le fichier vidéo si on lui donne l'URL (dont plusieurs formes sont possibles). Exemple d'utilisation:

youtube-dl http://youtube.com/watch?v=dMH0bHeiRNg

Ceci produit le fichier dMH0bHeiRNg.flv, lisible avec mplayer.

  • Cas particulier: vidéo située sur le site MetaCafe

Le paquet Debian metacafe-dl (attention à le prendre dans une version récente, Debian unstable par exemple, car le site web change parfois son système) rapatriera le fichier vidéo si on lui donne l'URL (dont plusieurs formes sont possibles). Exemple d'utilisation:

metacafe-dl http://www.metacafe.com/watch/40191/animals_vs_humans/

Ceci produit le fichier 40191.flv, lisible avec mplayer.

  • Cas général: Vidéo chargée par un programme Flash

Il existe plusieurs types de programmes Flash, et les techniques changent en fonction.

  • Méthodologie pour cette pub sur Maniac World :
  • Avoir installé le paquet swfdec-mozilla (existe chez Debian; sa version 0.5.2-1 suffit) avant de démarrer le navigateur (Iceweasel)
    • Clic droit dans la zone de la vidéo: activer Playing
    • Attendre que le programme s'exécute et que la vidéo démarre
    • Clic droit: désactiver Playing
    • Clic droit: Properties
    • agrandir la fenêtre pop-up qui apparaît
  • On observe un média vidéo (Type: Flash Video; Flash Movie est le programme chargeur Flash en lui-même)
  • Attendre la fin du chargement du fichier FLV (100%) puis cliquer sur sa ligne et choisir Save media as
  • On peut aussi copier son lien (je n'ai pas trouvé comment l'insérer dans le tampon avec ce toolkit) pour le récupérer à part.
  • Méthodologie pour cette interview sur Ratiatum.com (cette méthode fonctionne aussi pour les vidéos du site veoh, où cette vidéo est en fait hébergée):
  • Avoir installé le paquet swfdec-mozilla (existe chez Debian; sa version 0.5.2-1 suffit) avant de démarrer le navigateur (Iceweasel)
    • Clic droit dans la zone de la vidéo: activer Playing
    • Attendre que le programme s'exécute et que la vidéo démarre
    • Clic droit: désactiver Playing
    • Clic droit: Properties
    • agrandir la fenêtre pop-up qui apparaît
  • On n'observe pas de média vidéo (Type: Flash Video; Flash Movie est le programme chargeur Flash en lui-même)
  • C'est le média de Type: Text qui compte. Attendre la fin du chargement (100%) puis cliquer sur sa ligne et choisir Save media as
  • On peut aussi copier son lien (je n'ai pas trouvé comment l'insérer dans le tampon avec ce toolkit) pour le récupérer à part.
  • Dans ce fichier on remarque:
fullPreviewHashPath="''http://content.veoh.com/flash/p/1143821/c19d20cb888f6297229a49890ac44dd4f5d115f7.flv?ct=bf9a5fe7a290e1daa8b27ab27b1f2eaf0b55f93e48ebbc33''"
  • C'est l'URL à rapatrier (y compris le code final, sinon on prend un 403 Forbidden)
  • Méthodologie pour Dailymotion : aucune solution sur poste client (à base de logiciels libres) n'a été trouvée à ce jour. Si vous en connaissez une, n'hésitez surtout pas à nous en faire part ! Avec yt-dlp 'URL de la vidéo'.

Entrez le texte non formaté ici