CGJU
CGJU
10 juin 2026 · Temps de lecture 5 min

Base de la balise vidéo HTML5

Avant l'arrivée d'HTML5, la lecture vidéo web dépendait principalement de plugins tiers comme Flash, QuickTime. HTML5 a introduit la balise native <video>, permettant aux navigateurs de prendre en charge nativement la lecture vidéo. C'est un jalon important dans l'histoire de la vidéo web.

Utilisation de base de la balise vidéo

Lire une vidéo avec la balise vidéo est très simple, il suffit de quelques lignes de code :

<video src="video.mp4" controls width="640" height="360">
    Votre navigateur ne prend pas en charge la lecture vidéo
</video>

Attributs courants

  • src : adresse du fichier vidéo
  • controls : afficher la barre de contrôle de lecture
  • autoplay : lecture automatique (généralement avec muted)
  • loop : lecture en boucle
  • muted : sourdine
  • poster : image de couverture vidéo
  • preload : stratégie de préchargement

Formats vidéo pris en charge

Les formats vidéo pris en charge varient selon les navigateurs, ce qui était le plus gros problème de la vidéo HTML5 au début :

  • MP4 (H.264 + AAC) : meilleure compatibilité, tous les navigateurs modernes le prennent en charge
  • WebM (VP8/VP9 + Vorbis/Opus) : pris en charge par Chrome, Firefox
  • OGG (Theora + Vorbis) : pris en charge par Firefox, Chrome

Pour assurer la compatibilité avec tous les navigateurs, vous pouvez utiliser la balise source pour fournir plusieurs formats :

<video controls>
    <source src="video.mp4" type="video/mp4">
    <source src="video.webm" type="video/webm">
    Votre navigateur ne prend pas en charge la lecture vidéo
</video>

Limites de la balise vidéo native

Bien que la balise vidéo native soit simple à utiliser, elle a des limites évidentes :

  • Pas de support du streaming : ne peut lire que des fichiers complets, ne prend pas en charge les protocoles de streaming comme HLS/DASH
  • Pas de débit adaptatif : impossible de basculer la qualité selon les conditions réseau
  • Pas de DRM : impossible de lire du contenu chiffré protégé
  • Support de format limité : ne peut lire que les formats pris en charge nativement par le navigateur

Principes de Media Source Extensions

Media Source Extensions (MSE) est un ensemble d'API standardisées par le W3C. Il permet à JavaScript d'injecter dynamiquement des données multimédias dans la balise vidéo, réalisant ainsi la prise en charge du streaming. MSE est la technologie centrale de la lecture vidéo web moderne ; des lecteurs comme HLS.js et dash.js sont basés sur MSE.

Concepts clés de MSE

  • MediaSource : représente une source de données multimédias, peut être attachée à un élément vidéo
  • SourceBuffer : tampon pour stocker les données multimédias
  • SourceBufferList : liste de SourceBuffer

Flux de travail de MSE

Le flux de travail de base de MSE est le suivant :

  1. Créer un objet MediaSource
  2. Attacher MediaSource à l'élément vidéo
  3. Attendre l'ouverture de MediaSource
  4. Créer un SourceBuffer
  5. Récupérer les segments multimédias via fetch ou XHR
  6. Ajouter les données au SourceBuffer
  7. La balise vidéo lit les données depuis le SourceBuffer

Exemple de code de base MSE

const video = document.querySelector('video');
const mediaSource = new MediaSource();
video.src = URL.createObjectURL(mediaSource);

mediaSource.addEventListener('sourceopen', function() {
    const sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
    
    fetch('video-chunk.mp4')
        .then(response => response.arrayBuffer())
        .then(data => {
            sourceBuffer.appendBuffer(data);
        });
});

Avantages de MSE

  • Prise en charge du streaming : peut réaliser la lecture de flux HLS, DASH, etc.
  • Débit adaptatif : peut basculer dynamiquement la qualité selon le réseau
  • Contrôle flexible : JavaScript peut contrôler complètement la stratégie de tamponnage
  • Prise en charge de plusieurs formats : peut lire tant que le format peut être démuxé

Encrypted Media Extensions

Encrypted Media Extensions (EME) est un autre ensemble d'API important, utilisé pour lire du contenu multimédia protégé par DRM (Gestion des Droits Numériques). Des sites vidéo comme Netflix, YouTube Premium, Disney+ utilisent EME pour protéger leur contenu vidéo contre le piratage.

Composants clés d'EME

  • MediaKeys : représente un ensemble de clés de déchiffrement
  • MediaKeySession : session de déchiffrement, utilisée pour la négociation de clés
  • MediaKeySystemAccess : utilisé pour accéder à un système DRM spécifique
  • CDM : Content Decryption Module (Module de Déchiffrement de Contenu)

Systèmes DRM courants

Différents navigateurs et appareils prennent en charge différents systèmes DRM :

  • Widevine : développé par Google, pris en charge par Chrome, Firefox, Android
  • PlayReady : développé par Microsoft, pris en charge par Edge, Xbox
  • FairPlay : développé par Apple, pris en charge par Safari, iOS
  • PrimeTime : développé par Adobe, progressivement remplacé

Flux de travail EME

  1. Détecter les systèmes DRM pris en charge par le navigateur
  2. Créer MediaKeys et l'attacher à l'élément vidéo
  3. Créer une session de déchiffrement
  4. Générer une demande de licence
  5. Envoyer une demande au serveur de licences pour obtenir les clés
  6. Mettre à jour la clé de session
  7. Déchiffrement et lecture de la vidéo

Exemple de code de base EME

const video = document.querySelector('video');

navigator.requestMediaKeySystemAccess('com.widevine.alpha', [
  {
    videoCapabilities: [{ contentType: 'video/mp4; codecs="avc1.42E01E"' }]
  }
]).then(access => {
  return access.createMediaKeys();
}).then(mediaKeys => {
  return video.setMediaKeys(mediaKeys);
}).then(() => {
  video.src = 'encrypted-video.mp4';
  video.play();
});

API WebCodecs

WebCodecs est une API bas niveau fournie par le navigateur. Elle donne aux développeurs web un accès direct aux codecs multimédias intégrés du navigateur. Par rapport à MSE, WebCodecs est plus bas niveau, plus flexible et offre de meilleures performances ; c'est l'avenir de la technologie vidéo web.

Interfaces fournies par WebCodecs

  • VideoDecoder : décodeur vidéo
  • VideoEncoder : encodeur vidéo
  • AudioDecoder : décodeur audio
  • AudioEncoder : encodeur audio
  • VideoFrame : trame vidéo
  • EncodedVideoChunk : bloc de données vidéo encodé

Avantages de WebCodecs

  • Plus haute performance : accès direct aux codecs, moins d'étapes intermédiaires
  • Plus flexible : peut contrôler complètement le processus d'encodage/décodage
  • Prise en charge de l'encodage : peut non seulement décoder, mais aussi encoder la vidéo
  • Plus faible latence : adapté aux scénarios à faible latence comme la communication en temps réel
  • Compatible WebAssembly : peut fonctionner avec WASM pour implémenter plus de formats

Scénarios d'application de WebCodecs

  • Éditeurs vidéo : réaliser un montage vidéo professionnel dans le navigateur
  • Communication en temps réel : vidéo à faible latence en dehors de WebRTC
  • Jeu en cloud : rendu des graphismes de jeu
  • Traitement vidéo : traitement en temps réel de filtres, effets, etc.
  • Enregistrement vidéo : enregistrer le contenu de la caméra ou de l'écran

Exemple de décodage WebCodecs

const decoder = new VideoDecoder({
  output: frame => {
    const canvas = document.querySelector('canvas');
    const ctx = canvas.getContext('2d');
    ctx.drawImage(frame, 0, 0);
    frame.close();
  },
  error: e => console.error(e)
});

decoder.configure({
  codec: 'vp09.00.10.08',
  codedWidth: 1280,
  codedHeight: 720
});

fetch('encoded-chunk.vp9')
  .then(res => res.arrayBuffer())
  .then(data => {
    const chunk = new EncodedVideoChunk({
      type: 'key',
      timestamp: 0,
      data: data
    });
    decoder.decode(chunk);
  });

Prise en charge par les navigateurs

Prise en charge de la balise vidéo HTML5

  • Chrome : prise en charge complète
  • Firefox : prise en charge complète
  • Safari : prise en charge complète, avec support natif HLS
  • Edge : prise en charge complète
  • Navigateurs mobiles : pris en charge par la plupart

Prise en charge de MSE

  • Chrome : pris en charge, versions desktop et mobile
  • Firefox : pris en charge
  • Safari : pris en charge sur desktop, support limité sur mobile
  • Edge : pris en charge

Prise en charge d'EME

  • Chrome : prend en charge Widevine
  • Firefox : prend en charge Widevine
  • Safari : prend en charge FairPlay
  • Edge : prend en charge PlayReady et Widevine

Prise en charge de WebCodecs

  • Chrome : prise en charge complète (Chrome 94+)
  • Firefox : prise en charge partielle, toujours en développement
  • Safari : prise en charge partielle, toujours en développement
  • Edge : prise en charge complète

Évolution de la technologie de lecture

Première génération : Ère des plugins (2005-2010)

Représentée par Flash Player, le navigateur ne prenait pas nativement en charge la vidéo et nécessitait l'installation de plugins tiers. Avantages : format unifié, fonctionnalités puissantes ; inconvénients : mauvaise sécurité, performances faibles, pas de support sur les appareils mobiles.

Deuxième génération : Lecture native (2010-2015)

Avec l'apparition de la balise vidéo HTML5, les navigateurs prennent nativement en charge la lecture vidéo. Avantages : pas besoin de plugins, bonnes performances ; inconvénients : pas de support du streaming ni du DRM, formats non unifiés.

Troisième génération : Ère MSE/EME (2015-2020)

Standardisation de MSE et EME, rendant possible le streaming et le DRM. De nombreux lecteurs basés sur MSE comme HLS.js et dash.js apparaissent, améliorant considérablement l'expérience vidéo web. Le débit adaptatif et la lecture chiffrée deviennent standards.

Quatrième génération : Ère WebCodecs (2020-à ce jour)

L'API WebCodecs offre des capacités d'encodage/décodage bas niveau, et les performances de WebAssembly s'améliorent considérablement. Les navigateurs peuvent réaliser des traitements vidéo plus complexes ; les applications de jeu en cloud, d'édition vidéo, de communication en temps réel se développent rapidement.

Perspectives futures

  • Accélération WebGPU : traitement vidéo accéléré par GPU
  • Traitement vidéo IA : super-résolution IA, réduction de bruit, etc. dans le navigateur
  • Plus de support d'encodage : prise en charge de nouveaux codecs comme AV1, H.266
  • Médias immersifs : lecture vidéo VR/AR

Résumé

La technologie de lecture vidéo dans les navigateurs a évolué des plugins au natif, de la lecture simple au streaming, du format fixe au contrôle flexible. La balise vidéo HTML5 est la base, MSE a rendu possible la lecture en streaming, EME a implémenté la protection du contenu, et WebCodecs ouvre des possibilités encore plus larges.

Comprendre ces principes techniques nous aide à mieux comprendre le fonctionnement des lecteurs vidéo web. Si vous voulez expérimenter ces technologies, vous pouvez utiliser notre lecteur M3U8 en ligne, basé sur les technologies HLS.js et MSE, qui lit les flux HLS directement dans le navigateur.

Recommandations

Plus d'articles intéressants et d'outils pratiques

Envoyer d'essayer la lecture vidéo web ?

Utilisez notre lecteur M3U8 en ligne gratuit, pas besoin d'installer de logiciel, lisez les flux vidéo HLS directement dans votre navigateur

Essayer maintenant ➡