Intégrez un lecteur de playlist

Vous avez une playlist Streamlike et vous voulez que vos visiteurs l'enchaînent comme une série : un lecteur, la liste des vidéos à côté, le passage automatique à la suivante et un lien de partage qui redémarre au bon endroit. C'est ce que fait generatePlaylistPlayer, disponible dans le SDK JavaScript depuis la version 3.5.0. Une fonction, un conteneur, et le reste n'est que du réglage.

Deux lignes pour démarrer

Installez le SDK, pointez un conteneur, donnez l’identifiant de votre playlist.

À ce stade, vous avez déjà un lecteur fonctionnel : les médias sont récupérés dans l’ordre de la playlist, le premier est chargé, la liste s’affiche à droite avec les vignettes et les durées, les boutons précédent / suivant sont actifs, et la vidéo suivante démarre à la fin de la précédente.

Voici ce que donne ce code, sur la playlist de démonstration Streamlike :

Chargement de la démo…

Démo réglée sur quatre vidéos par page, pour faire apparaître le bouton « Charger plus » sous la liste.

Le lecteur accepte aussi une vue (viewId), une société (companyId), ou directement un tableau de médias que vous avez déjà récupéré (medias) — pratique si votre page appelle le webservice pour d’autres raisons. Les paramètres de tri et de filtrage du webservice restent accessibles via playlistParams.

Sans rien installer

Le SDK n’a aucune dépendance : les fichiers publiés sont directement utilisables par un navigateur, depuis un CDN npm comme jsDelivr ou unpkg. Ni installation, ni étape de build — de quoi monter un prototype, une page isolée ou un site que vous ne compilez pas.

Si votre page ne peut pas utiliser les modules ES — un CMS, un gabarit ancien —, une seconde version expose tout le SDK sur une variable globale :

Un conseil : épinglez toujours une version précise. Avec @latest, une publication future modifierait le comportement de pages que vous ne maîtrisez plus. Et gardez en tête qu’un CDN public ajoute un tiers dans vos pages : les intégrations qui ne peuvent pas l’accepter passeront par npm et serviront le SDK depuis leur propre domaine.

Choisir les informations affichées

C’est le réglage qui change tout selon le contexte : une page d’actualités n’affiche pas les mêmes métadonnées qu’un espace de formation. L’option info liste ce qui apparaît pendant la lecture.

OptionDéfautContenu
titletrueLe nom du média
positiontrueLe rang dans la playlist, façon « 3 / 12 »
durationtrueLa durée totale du média
currentTimefalseLa position de lecture, mise à jour en direct
playlistNamefalseLe nom de la playlist
descriptionfalseLa description du média
releaseDatefalseLa date de diffusion
releaseTimefalseL’heure de diffusion (heures et minutes)
viewsfalseLe nombre de lectures
keywordsfalseLes mots-clés standards

L’option locale gouverne le formatage des dates, des heures et du nombre de lectures. Les textes de l’interface, eux, se remplacent via labels.

La même logique s’applique aux entrées de la liste avec listItem : vignette, numéro, titre, durée, description. Et si vous voulez que les vignettes s’animent au survol, passez-leur les options de l’aperçu interactif :

Les playlists longues

Une playlist de trois cents vidéos ne se charge pas d’un bloc. Le lecteur en récupère dix, puis étend la liste au fur et à mesure de la lecture : en arrivant sur la neuvième, les dix suivantes sont déjà en route. Un bouton « plus » reste disponible sous la liste tant qu’il y a des vidéos à charger, et le compteur indique où vous en êtes — « 20 / 330 ».

Rien à régler pour que ce soit le cas. Si vous préférez tout charger d’un coup, sur une playlist courte ou une page qui doit être complète immédiatement, augmentez la taille de page :

Une réserve sur les longues listes : les vignettes animées téléchargent le storyboard de chaque vidéo dès son affichage. Sur une vitrine de quelques dizaines d’entrées, l’effet vaut le coût ; sur trois cents, cela fait autant de requêtes. La vignette fixe, appliquée par défaut, est le bon choix au-delà.

Un lien qui démarre au bon endroit

Le cas classique : quelqu’un veut partager le passage à 1 min 05 de la troisième vidéo. Deux options suffisent.

Le timecode accepte des secondes (65) ou un format horaire (00:01:05.500). Si le média demandé n’appartient pas à la playlist, le lecteur repart sur le premier plutôt que de rester vide.

Pour automatiser l’aller-retour, activez shareParams : le lecteur lit alors ?media=...&t=... dans l’URL de la page, et sait générer ce même lien pour la position en cours.

Le nom des deux paramètres d’URL est configurable, au cas où media et t seraient déjà pris sur votre site.

Piloter le lecteur depuis votre page

generatePlaylistPlayer renvoie un contrôleur. Vous n’êtes donc pas limité aux boutons fournis : un sommaire maison, un raccourci clavier ou un chapitrage externe peuvent commander la lecture.

Deux rappels complètent l’ensemble : onMediaChange(media, index) à chaque changement de vidéo — pratique pour votre outil de mesure d’audience — et onPlaylistEnd() quand la dernière se termine, si vous voulez enchaîner sur autre chose. Avec loop: true, la playlist repart au début.

Habiller le lecteur

Chaque élément généré porte une classe préfixée, sl-playlist par défaut : sl-playlist-info-titlesl-playlist-itemsl-playlist-button-next… La feuille de style embarquée n’utilise que des sélecteurs de classe simples, vos règles la surchargent donc sans bataille de spécificité ni !important.

Le média en cours de lecture porte la classe is-active dans la liste. Si vous préférez repartir d’une page blanche, injectStyles: false désactive la feuille par défaut ; classPrefix renomme l’ensemble des classes pour les aligner sur votre convention. La position de la liste se règle avec listPosition : rightleftbottom ou top.

Un détail qui fait gagner du temps

autostart: true demande au lecteur de démarrer seul. Les navigateurs, eux, bloquent la lecture automatique avec le son : sur une page où le visiteur n’a encore rien cliqué, ajoutez muted: true dans playerParams si vous tenez au démarrage immédiat. En navigation à l’intérieur de la playlist, la question ne se pose plus — le clic de l’internaute vaut autorisation, et chaque vidéo suivante démarre d’elle-même.

À vous d’essayer

Partez du minimum, activez les informations qui comptent pour votre page, puis branchez le partage timecodé. La démo livrée avec le SDK (demo/playlist-player.html) permet de basculer chaque option à la volée pour trouver le bon réglage avant de l’écrire dans votre code.

Partager ce post