Compatibilité des conteneurs et codecs vidéo
La lecture vidéo dépend de deux choix distincts : le conteneur qui organise le média et le codec qui compresse l’image.
Lancer gratuitement
Une extension connue ne garantit pas que le flux vidéo qu’elle contient sera lisible partout. Ce vérificateur évalue MP4, MOV, MKV, WebM et AVI associés à H.264, H.265, VP9 ou AV1. Il fournit un niveau de prise en charge prudent, explique le principal risque d’interopérabilité et indique quand vous devez proposer une solution de repli largement lisible.
Interprétez correctement le résultat de compatibilité
Le vérificateur emploie trois niveaux plutôt que de réduire la lecture à un simple oui ou non technique. Large signifie que l’association constitue un choix fiable dans les principaux navigateurs actuels et les environnements iOS et Android modernes. Limitée indique une prise en charge réelle, mais aussi des lacunes importantes liées à la famille du navigateur, à la version du système, au matériel ou à la manière habituelle d’encapsuler le codec. Faible désigne une association inhabituelle pour le Web ou peu fiable dans les lecteurs mobiles natifs. Le booléen de compatibilité générale simplifie l’automatisation, tandis que l’explication conserve la justification du classement. Il s’agit d’une évaluation au niveau du format, et non d’une garantie pour chaque fichier encodé. Le profil, le niveau, la résolution, la profondeur de couleur, la cadence, le codec audio, le chiffrement et des métadonnées endommagées peuvent encore empêcher la lecture. Utilisez ce résultat comme contrôle d’architecture avant l’encodage et les essais sur appareils, sans remplacer les tests de fichiers représentatifs sur les plateformes de votre public.
Choisissez ensemble le conteneur et le codec
Un codec décrit la compression des images ; un conteneur définit l’empaquetage de la vidéo, de l’audio, de la synchronisation, des sous-titres et des métadonnées. Ces couches sont liées, mais ne sont pas interchangeables. H.264 dans MP4 est très portable, car la compression et son encapsulation disposent d’implémentations éprouvées dans les navigateurs et sur mobile. Le même flux H.264 dans AVI ou MKV peut fonctionner dans une application de bureau, puis échouer comme vidéo Web intégrée ou dans le lecteur système d’un téléphone. De même, VP9 est naturellement associé à WebM pour les navigateurs, alors que son insertion dans MOV crée une combinaison inhabituelle et peu interopérable. Les codecs récents réduisent parfois la bande passante, mais leur efficacité ne rend pas un format universel. H.265 bénéficie d’une prise en charge particulièrement solide chez Apple ; ailleurs, le résultat dépend davantage du navigateur, du système, des licences et du matériel. L’adoption d’AV1 progresse, mais les anciens téléphones et les appareils sans décodeur adapté restent importants pour de nombreux publics.
Prévoyez des solutions de repli et des tests réels
Pour obtenir la portée pratique la plus large, utilisez MP4 avec H.264 comme ressource de référence. Lorsque vos objectifs de qualité ou de bande passante justifient VP9, AV1 ou H.265, proposez le nouvel encodage comme source supplémentaire au lieu de supposer qu’un fichier avancé conviendra à tous. Un lecteur Web peut déclarer plusieurs sources afin que le navigateur choisisse celle qu’il comprend ; une application peut décider de la même manière selon la plateforme et les décodeurs disponibles. Encodez séparément la solution de repli et vérifiez que le serveur envoie le bon type de média, accepte les requêtes par plages d’octets et autorise les accès entre origines nécessaires. Testez de vrais fichiers, car une matrice ne voit ni profil, ni niveau, ni format de pixel, ni couleur, ni codec audio, ni métadonnées incorrectes. Couvrez des iPhone et appareils Android anciens et récents ainsi que les navigateurs révélés par vos statistiques. Testez le démarrage et la recherche temporelle, puis recommencez après toute modification de votre gamme d’encodage ou des versions minimales prises en charge.
Cas d’usage
Choisir un format de diffusion Web
Comparez le conteneur et le codec envisagés avant de configurer une chaîne d’encodage ou une source vidéo HTML.
Valider les médias téléversés
Avertissez les équipes de publication lorsqu’une association risque d’être mal lue dans les navigateurs et sur mobile.
Imposer une stratégie de repli
Utilisez le booléen de prise en charge large dans le CI pour exiger MP4/H.264 avec les formats récents.
Questions fréquentes
Un résultat large garantit-il la lecture partout ?
Non. Il indique une forte couverture du format, mais le profil, le niveau, la profondeur, l’audio, le chiffrement, les métadonnées et la version du navigateur interviennent aussi.
Pourquoi contrôler séparément le conteneur et le codec ?
Le codec compresse la vidéo ; le conteneur regroupe ce flux avec la synchronisation, l’audio et les métadonnées. Une plateforme peut accepter un codec dans un conteneur et pas dans un autre.
Quelle est la solution de repli la plus sûre ?
Parmi les choix proposés, MP4 avec H.264 est la solution générale la plus fiable pour les navigateurs, iOS et Android.
Le vérificateur analyse-t-il mon fichier vidéo ?
Non. Il évalue les noms du conteneur et du codec que vous fournissez. Employez un outil de métadonnées pour identifier les flux d’un fichier existant.
Pourquoi une association limitée fonctionne-t-elle sur mon téléphone ?
Limitée signifie qu’une prise en charge réelle existe, mais qu’elle varie trop entre navigateurs, versions de système et appareils pour être qualifiée de large.
Quel est le prix d’une requête ?
Chaque requête API coûte $0.002. L’exécution dans le navigateur repose sur la même logique déterministe de compatibilité.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/video/container-compatibility \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"container":"mp4","codec":"h264"}'const res = await fetch("https://api.kit.forhosting.com/video/container-compatibility", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"container": "mp4",
"codec": "h264"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/container-compatibility",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"container": "mp4",
"codec": "h264"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/container-compatibility", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"container":"mp4","codec":"h264"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"container":"mp4","codec":"h264"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/container-compatibility", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"container": "mp4",
"codec": "h264"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.container_compatibility",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |