Bonjour,
Il semble que le passage à video.js nécessite quelques ajustements, car ce framework encapsule le lecteur vidéo avec des méthodes spécifiques. Voici une approche pour adapter ton code avec video.js tout en conservant la logique que tu avais avec l'élément natif <video>.
Pour contrôler le timecode avec video.js, tu dois interagir avec l'instance du lecteur vidéo fournie par video.js et non directement avec l'élément vidéo comme auparavant. Voici une version adaptée de ton code :
Assure-toi d'avoir inclus la librairie video.js correctement dans ton projet.
Voici comment tu pourrais modifier ton script pour qu'il fonctionne avec video.js :
Script avec video.js
<!DOCTYPE html>
<html>
<head>
<link href="
https://vjs.zencdn.net/7.6.6/video-js.css" rel="stylesheet" />
</head>
<body>
<video id="mavideo" class="video-js vjs-theme-fantasy" controls preload="auto" width="640" height="264"
data-setup="{}">
<source src="
https://vjs.zencdn.net/v/oceans.mp4" type="video/mp4" />
<p class="vjs-no-js">
Pour visionner cette vidéo, activez JavaScript et utilisez un navigateur qui prend en charge la vidéo HTML5.
</p>
</video>
<a href="#" onclick="timecode(60)">Lire à partir de 1 min</a>
<script src="
https://vjs.zencdn.net/7.6.6/video.js"></script>
<script type="text/javascript">
var player = videojs('mavideo'); // Initialisation du lecteur video.js
function timecode(secondes) {
player.currentTime(secondes); // Définit le temps de lecture
player.play(); // Lance la lecture
}
</script>
</body>
</html>
Explication des changements :
Initialisation du lecteur : La ligne var player = videojs('mavideo'); initialise le lecteur vidéo via video.js en utilisant l'ID de l'élément vidéo.
Méthodes spécifiques à video.js : Pour contrôler la vidéo, on utilise les méthodes propres à video.js :
player.currentTime(secondes) : pour définir le temps de départ.
player.play() : pour démarrer la lecture.
Amélioration avec des paramètres URL
Si tu veux passer des paramètres via l'URL (comme dans la deuxième partie de ta question), tu peux combiner cette approche avec ton script extractUrlParams() pour lancer la vidéo à un moment précis défini par un paramètre seconds dans l'URL. Voici comment cela pourrait s'intégrer :
window.onload = function() {
let paramsUrl = extractUrlParams();
if (paramsUrl['seconds']) {
let startTime = parseInt(paramsUrl['seconds']);
timecode(startTime);
}
};
function extractUrlParams() {
let t = location.search.substring(1).split('&');
let f = {};
for (let i = 0; i < t.length; i++) {
let x = t
.split('=');
f[x[0]] = x[1];
}
return f;
}
Cela permettrait de démarrer la vidéo automatiquement à partir du temps spécifié dans l'URL (par exemple : ?seconds=60).