Extension:TimedMediaHandler

This page is a translated version of the page Extension:TimedMediaHandler and the translation is 100% complete.
Manuel des extensions MediaWiki
OOjs UI icon advanced-invert.svg
TimedMediaHandler
État de la version : stable
Screenshot of TimedMediaHandler using VideoJS with Big Buck Bunny.png
Implémentation Média, API
Description Fournit un support intégré pour le transcodage côté serveur, WebM, Ogg Theora, Vorbis, MP3, Speex et texte synchrone (Timed_Text)
Auteur(s) Michael Dale, Jan Gerber, Tim Starling, James Heinrich, Brion Vibber, Derk-Jan Hartman
Dernière version 0.6.0
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki >= 1.38.0
Modifie la base
de données
Oui
Tables transcode
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
  • $wgMediaAudioTypes
  • $wgMediaVideoTypes
  • $wgWaitTimeForTranscodeReset
  • $wgEnableNiceBackgroundTranscodeJobs
  • $wgTmhEnableMp4Uploads
  • $wgUseFFmpeg2
  • $wgEnableTranscode
  • $wgTmhPriorityResolutionThreshold
  • $wgFFmpegVP9RowMT
  • $wgEnableIframeEmbed
  • $wgParserTestMediaHandlers
  • $wgTranscodeBackgroundSizeLimit
  • $wgTranscodeBackgroundTimeLimit
  • $wgEnabledAudioTranscodeSet
  • $wgTmhSoundfontLocation
  • $wgTmhFileExtensions
  • $wgTimedTextForeignNamespaces
  • $wgMinimumVideoPlayerSize
  • $wgFFmpegThreads
  • $wgTmhFluidsynthLocation
  • $wgTranscodeBackgroundMemoryLimit
  • $wgEnabledTranscodeSet
  • $wgFFmpegLocation
  • $wgTmhPriorityLengthThreshold
  • $wgTimedTextNS
  • $wgTranscodeBackgroundPriority
Quarterly downloads 282 (Ranked 36th)
Public wikis using 2,502 (Ranked 46th)
Traduire l’extension TimedMediaHandler sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L'extension TimedMediaHandler vous permet d'inclure des fichiers audio et vidéo dans les pages wiki, en utilisant la même syntaxe que pour les fichiers d'images . Elle comprend le lecteur VideoJS. Elle prend en charge les sous-titres et les légendes (c'est à dire le texte synchrone - Timed Text), et le basculement des flux temps réel entre plusieurs WebM et autres dérivés, ainsi que des fonctionnalité supplémentaires. La prise en charge côté serveur TMH comprend les options permettant de téléverser l'audio et la vidéo HTML5, plusieurs profils de transcodage pour délivrer le contenu, la lecture des fichiers MIDI, l'analyse des métadonnées pour les vidéos Ogg et WebM, et l'intégration au système de la file d'attente des travaux de MediaWiki pour l'ordonnancement des tâches de transcodage.

Pour les nouveaux développements et ceux à venir en 2022, voir TimedMediaHandler/2022 work.

Notez-bien qu'actuellement TimedMediaHandler ne fonctionne pas avec PostgreSQL. Voir tâche T157424.

Aperçu de la fonctionnalité

Concernant le lecteur, voir : VideoJS Player.

Pour les fonctionnalités liées au système de sous-titrage, voir la page Timed Text.

Synopsis de la syntaxe

En plus de la syntaxe d'inclusion des images, Timed Media Handler prend en charge :

[[File:Video.ogv|File:Video.ogv]]
Affiche une video dans sa taille nominale. Affiche une image fixe à partir du point milieu avec un bouton pour démarrer un lecteur embarqué.
[[File:Audio.oga|File:Audio.oga]]
Affiche un emplacement pour un fichier son avec un bouton de lecture pour démarrer le lecteur embarqué.
[[File:Midi.mid]]
Génère un signal audio digital à partir des instructions contenues dans le fichier MIDI et affiche le lecteur audio embarqué pour produire le son.
[[File:Video.ogv|thumb]]
Affiche une vidéo dans une boîte de vignette flottante.
<gallery>File:Video.ogv</gallery>
affiche une vidéo à partir d'une galerie d'images (chaque clip va ouvrir une fenêtre de dialogue pour le lecteur complet)
[[File:Video.ogg|thumbtime=1:25]]
Utiliser une trame de 1 minute 25 secondes de vidéo pour l'emplacement de l'image. Un nombre seul est considéré comme étant le décalage (offset) en secondes par rapport au début. Vous pouvez aussi utiliser le format HH:MM:SS ; par exemple 1:02:22 représente 1 heure, 2 minutes, et 22 secondes dans la vidéo. Les secondes exprimées en format flottant sont prises en charge (mais posent problème sur les wikis Wikimedia : phab:T228467).
[[File:Video.ogg|start=1:25]]
Fragments de média temporels affiche un clip vidéo qui commence au temps 1 minute et 25 secondes à partir du début de la vidéo. Un nombre seul est considéré comme étant le décalage en secondes. Vous pouvez aussi inclure une référence de fin de la forme end=1:30 et pour laquelle le résultat sera un clip de 5 secondes représentant le morceau allant du temps 1:25 au temps 1:30 de la vidéo. Si thumbtime n’est pas fourni, l'heure de début sera utilisée pour afficher la vignette, Vous pouvez aussi utiliser le format HH:MM:SS ; par exemple 1:02:22 représente 1 heure, 2 minutes, et 22 secondes dans la vidéo.
start= et end= peuvent également être utilisés comme paramètres de la requête dans l'URL pour la page d'un fichier vidéo.
[[File:Video.ogg|muted]]
Commencer la lecture du média en coupant le son. (introduit dans 1.39)
[[File:Video.ogg|loop]]
Lire la vidéo en boucle continue. (introduit dans 1.39)
Obsolète
Les mots noicon et noplayer de la syntaxe sont obsolètes et ne fonctionnent pas. De la même manière le mot-clé disablecontrols tend à devenir obsolète. (Voir tâche T135537) Fournir une liste des valeurs suivantes séparées par des virgules : options, timedText, fullscreen

Support client

Exemple de lecteur vidéo
Exemple de lecteur audio
Lecteur audio plus large, affichant la barre de progression

Le lecteur fonctionne avec la plupart des navigateurs modernes (voir la matrice du support de MediaWiki). La prise en charge des mobiles est variable en particulier pour iOS.

TimedMediaHandler comprend un module de compatibilité JavaScript pour l'audio et la vidéo Ogg qui fonctionne avec les navigateurs Safari, Internet Explorer 10/11, et Microsoft Edge.

Les utilisateurs tiers de MediaWiki peuvent également souhaiter activer manuellement la prise en charge du format MP4 H.264/AAC pour lire les vidéos propriétaire et l'audio sous Safari, IE ou Edge, mais il est possible qu'en utilisant ces formats il faille posséder une licence de brevet de MPEG-LA pour la diffusion sur Internet.

Installation

Si vous souhaitez avoir une version récente de ffmpeg pour prendre en charge l'encodage en WebM (avec la dernière version de VP9).

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé TimedMediaHandler dans votre dossier extensions/.
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'TimedMediaHandler' );
    $wgFFmpegLocation = '/usr/bin/ffmpeg'; // Chemins les plus habituels de ''ffmpeg'' sous Linux
    
  • Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
  • Configurez selon les besoins.
  • Il peut être nécessaire d'augmenter la mémoire autorisée dans $wgMaxShellMemory .
  •   Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

L'extension va ajouter automatiquement dans $wgFileExtensions les types de fichiers pris en charge (sauf pour mp4), il est donc inutile d'ajouter ces types manuellement.

Après avoir téléchargé cette extension, veuillez noter qu'elle nécessite Composer .

Donc après l'installation, modifiez le répertoire contenant l'extension par exemple "../extensions/TimedMediaHandler/" et exécutez composer install --no-dev, ou composer update --no-dev si vous faites une mise à jour.

Alternativement et de préférence, ajoutez la ligne "extensions/TimedMediaHandler/composer.json" au fichier « composer.local.json » dans le répertoire racine de votre wiki comme par exemple

{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/TimedMediaHandler/composer.json"
			]
		}
	}
}

Comparaison entre les différentes options Wikipedia d'encodage des médias

Depuis 2018, les sites Wikimedia utilisent VP9.

Tri par niveau de largeur de bande :

Débit Mbit/s WebM VP8 WebM VP9
Super lent 0.08 160p
Très lent 0.16 160p 240p
Faible 0.25 240p 360p
Modéré 0.5 360p 480p
Moyen 1.0 480p 720p
Élevé 2.0 720p 1080p
Très élevé 4.0 1080p 1440p
Super rapide 8.0 2160p

Options détaillées :

Nom 160P 240P 360P 480P 720P 1080P 160P 240P 360P 480P 720P 1080P 1440P 2160P
Conteneur WebM
Vidéo Encodage VP8 VP9
Largeur maximale (pixels) 288 426 640 854 1280 1920 288 426 640 854 1280 1920 2560 4096
Hauteur maximale (pixels) 160 240 360 480 720 1080 160 240 360 480 720 1080 1440 2160
Débit (Mbit/s) 0.16 0.25 0.5 1.0 2.0 4.0 0.08 0.16 0.25 0.5 1.0 2.0 4.0 8.0
Audio Encodage Vorbis Opus
Canaux 2 (stereo) (pass-through)
Taux d'échantillonnage (Hz) 44100 48000
Qualité - 1 2 3 - (default)

Configuration

Cette section est obsolète -- veuillez la mettre à jour.

Voici quelques paramètres de configuration pouvant être utiles :

// The minimum size for an embed video player (smaller than this size uses a pop-up player).
$wgMinimumVideoPlayerSize = 200;

// If transcoding is enabled for this wiki (if disabled, no transcode jobs are added and no transcode status is displayed).
// Note if remote embedding an asset we will still check if the remote repo has transcoding enabled and associated flavors
// for that media embed.
$wgEnableTranscode = true;

// The total amout of time a transcoding shell command can take:
$wgTranscodeBackgroundTimeLimit = 3600 * 8;
// Taille maximale de la mémoire virtuelle disponible pour les processus de transcodage (kilo octets)
$wgTranscodeBackgroundMemoryLimit = 2 * 1024 * 1024; // 2GB avconv, ffmpeg2theora mmap resources so virtual memory needs to be high enough
// Maximum file size transcoding processes can create, in KB
$wgTranscodeBackgroundSizeLimit = 3 * 1024 * 1024; // 3GB

// Number of threads to use in avconv for transcoding
$wgFFmpegThreads = 1;

// The NS for TimedText (registered on MediaWiki.org)
// https://www.mediawiki.org/wiki/Extension_namespace_registration
// Note commons pre-dates TimedMediaHandler and should set $wgTimedTextNS = 102 in LocalSettings.php
$wgTimedTextNS = 710;

// Set TimedText namespace for ForeignDBViaLBRepo on a per wikiID basis
// $wgTimedTextForeignNamespaces = array( 'commonswiki' => 102 );
$wgTimedTextForeignNamespaces = array();

/**
* Default enabled transcodes
*
* -If set to empty array, no derivatives will be created
* -Derivative keys encode settings are defined in WebVideoTranscode.php
*
* -These transcodes are *in addition to* the source file.
* -Only derivatives with smaller width than the source asset size will be created
* -Regardless of source size at least one WebM and Ogg source will be created from the $wgEnabledTranscodeSet
* -Derivative jobs are added to the MediaWiki JobQueue the first time the asset is uploaded
* -Derivative should be listed min to max
*/
// Starting from 1.31
// All valid string values are listed in the extension's extension.json file 
$wgEnabledTranscodeSet = [
    '160p.webm' => true,
    '240p.webm' => true,
    '360p.webm' => true,
    '480p.webm' => true,
    '720p.webm' => true,
    '1080p.webm' => true,
];

$wgEnabledAudioTranscodeSet = [
	'ogg' => true,   // ogg+vorbis
	'opus' => false, // ogg+opus
	'mp3' => true,   // raw mp3
	'm4a' => false,  // mp4+aac (mp4a.40.5)
];

// If mp3 source assets can be ingested:
$wgTmhEnableMp3Uploads = true;

// If mp4 source assets can be ingested:
$wgTmhEnableMp4Uploads = false;

// If you use ffmpeg 2 can be set it to true
$wgUseFFmpeg2 = false;

Pour le transcodage, assurez-vous d'avoir assez de place pour $wgMaxShellMemory, $wgMaxShellTime et $wgMaxShellFileSize afin que les tâches d'encodage puissent s'exécuter pleinement et sauvegarder les résultats. En général les valeurs par défaut semblent être trop faibles.

Exécuter les tâches de transcodage

Parce que les tâches de transcodage nécessitent beaucoup de ressources, elles ne sont pas exécutées dans la file des tâches normales (voir tâche T29336). A la place, elles doivent être demandées à l'aide de l'argument --type :

php maintenance/runJobs.php --type webVideoTranscode

Si l'exécution de cette commande provoque un blocage infini, essayez de mettre $wgTranscodeBackgroundTimeLimit = 0; dans LocalSettings.php. Voir tâche T206957.

Noeuds d'encodage

Pour transcoder plusieurs vidéos, vous voudrez peut-être exécuter plusieurs noeuds d'encodage se connectant à la base de données maîtresse et accèdant directement au dépôt de vos fichiers. Il vous faudra alors installer ffmpeg.

Installation minimale sous Debian et Ubuntu

apt install ffmpeg

Ajouter en plus ceci dans votre LocalSettings.php (testé uniquement sur Devuan ASCII (Archived 2018-09-23 at the Wayback Machine)) :

$wgFFmpegLocation = '/usr/bin/ffmpeg';

Résolution des problèmes

Cette section nécessite d'être développée.
ffmpeg – échec pour associer le segment de l'objet partagé
Augmentez dans $wgMaxShellMemory , la taille de la mémoire autorisée.
Classe 'getID3' non trouvée
Installez les dépendances PHP de l'extension en utilisant Composer, voir le paragraphe Installation.
Option non reconnue 'max_muxing_queue_size'
Vous utilisez peut être ffmpeg 2. Vous devez ajouter $wgUseFFmpeg2 = true; dans votre LocalSettings.php.