Surveillance et alerte des services vidéo
Indicateurs QoS vidéo, analyse des logs, algorithmes de détection d'anomalies, construire un système de surveillance complet des services vidéo.
Lire la suite →Construire des API de services vidéo de haute qualité et évolutives
Les API de traitement vidéo diffèrent des API CRUD classiques : elles impliquent des scénarios complexes tels que le transfert de fichiers volumineux, le traitement de longue durée et le suivi d'état. Une API de traitement vidéo bien conçue doit respecter les principes suivants :
Il est recommandé aux API de traitement vidéo de suivre le style de conception RESTful, d'utiliser les méthodes et codes d'état HTTP standard, pour offrir une expérience d'interface claire et cohérente.
/api/v1/tasks, tâches de traitement vidéo/api/v1/files, fichiers vidéo téléchargés/api/v1/templates, modèles/présélections de traitement/api/v1/jobs, jobs de traitement spécifiquesLe flux typique de traitement vidéo comprend quatre étapes : téléchargement de fichier, soumission de tâche, traitement asynchrone et rappel de résultat.
Pour le téléchargement de fichiers volumineux, il est recommandé d'utiliser une solution de téléchargement par segments (Multipart Upload) :
# 1. Initialiser le téléchargement
POST /api/v1/uploads
{
"filename": "video.mp4",
"file_size": 1073741824,
"content_type": "video/mp4"
}
# Réponse
{
"upload_id": "upl_abc123",
"chunk_size": 5242880,
"chunks": 205
}
# 2. Télécharger un segment
PUT /api/v1/uploads/upl_abc123/chunks/1
Content-Range: bytes 0-5242879/1073741824
# 3. Terminer le téléchargement
POST /api/v1/uploads/upl_abc123/complete
{
"checksum": "sha256:abc123..."
}
# Réponse
{
"file_id": "file_xyz789",
"filename": "video.mp4",
"size": 1073741824
}
POST /api/v1/tasks
Content-Type: application/json
{
"input_file": "file_xyz789",
"output_format": "mp4",
"video": {
"codec": "h264",
"bitrate": "2000k",
"resolution": "1920x1080",
"fps": 30
},
"audio": {
"codec": "aac",
"bitrate": "128k"
},
"callback_url": "https://example.com/webhook",
"callback_secret": "my-secret-key"
}
# Réponse 202 Accepted
{
"task_id": "task_abc123",
"status": "queued",
"created_at": "2026-04-28T12:00:00Z",
"estimated_time": 180
}
GET /api/v1/tasks/task_abc123
# Réponse
{
"task_id": "task_abc123",
"status": "processing",
"progress": 45,
"current_stage": "encoding",
"created_at": "2026-04-28T12:00:00Z",
"started_at": "2026-04-28T12:00:10Z",
"estimated_completion": "2026-04-28T12:03:10Z",
"input_file": "file_xyz789",
"output_file": null,
"error": null
}
# Le serveur envoie une requête POST à callback_url
POST https://example.com/webhook
X-Signature: sha256=abc123...
{
"task_id": "task_abc123",
"status": "completed",
"progress": 100,
"output_file": {
"file_id": "file_output_123",
"url": "https://cdn.example.com/output.mp4",
"size": 250000000,
"duration": 600.5
},
"completed_at": "2026-04-28T12:03:05Z"
}
Les API de streaming en temps réel diffèrent grandement des API de traitement vidéo classiques : elles doivent gérer des connexions longues, la transmission de données en temps réel et l'ajustement dynamique du débit binaire.
# Créer un flux en direct
POST /api/v1/live/streams
{
"title": "Différence en direct de lancement produit",
"publish_type": "rtmp",
"resolution": ["1080p", "720p", "480p"],
"record": true,
"callback_url": "https://example.com/live/webhook"
}
# Réponse
{
"stream_id": "live_abc123",
"push_url": "rtmp://push.example.com/live/abc123",
"push_key": "live_abc123?token=xyz789",
"play_urls": {
"hls": "https://play.example.com/live/abc123/index.m3u8",
"flv": "https://play.example.com/live/abc123.flv",
"webrtc": "webrtc://play.example.com/live/abc123"
},
"status": "waiting"
}
# Obtenir l'état du flux en direct
GET /api/v1/live/streams/live_abc123
# Réponse
{
"stream_id": "live_abc123",
"status": "live",
"viewer_count": 1250,
"bitrate": 2500000,
"resolution": "1920x1080",
"started_at": "2026-04-28T12:00:00Z",
"duration": 1800
}
Pour le streaming en temps réel, il faut fournir des données statistiques à granularité fine :
Les API de traitement vidéo utilisent généralement plusieurs méthodes d'authentification :
Utilisation d'Access Key + Secret Key pour la vérification de signature, adapté aux appels côté serveur :
# Exemple d'en-têtes de requête
X-Access-Key: your_access_key
X-Timestamp: 1714305600
X-Signature: HMAC-SHA256:...
X-Nonce: random_string
Adapté aux appels frontend ou aux scénarios à courte durée de validité :
Utilisé pour protéger les adresses de lecture vidéo et empêcher le détournement de lien :
https://cdn.example.com/video.mp4?sign=abc123&t=1714305600
# Logique de vérification
sign = md5(uri + expire_time + secret_key)
si temps non expiré && sign vérifié:
renvoyer le contenu vidéo
sinon:
renvoyer 403 Forbidden
# Exemple de réponse d'erreur
{
"error": {
"code": "TASK_LIMIT_EXCEEDED",
"message": "Le nombre de tâches traitées simultanément a atteint la limite",
"details": {
"current_tasks": 5,
"max_tasks": 5
},
"request_id": "req_abc123",
"retryable": true,
"retry_after": 60
}
}
Les services de traitement vidéo consomment beaucoup de ressources ; il est essentiel de mettre en œuvre des stratégies de limitation de débit raisonnables pour protéger la stabilité du système.
La conception des API de traitement vidéo doit tenir compte pleinement des spécificités du scénario vidéo : fichiers volumineux, longue durée, forte concurrence, consommation de ressources importante. L'adoption de mécanismes tels que le mode de traitement asynchrone, le téléchargement par segments et les notifications de rappel peut offrir une bonne expérience utilisateur. Parallèlement, un système d'authentification complet, une stratégie de limitation de débit raisonnable et une gestion des erreurs claire sont les garantes du fonctionnement stable de l'API.
Suivre les normes RESTful, fournir une documentation détaillée et des SDK, maintenir la compatibilité ascendante des interfaces, peut grandement réduire le coût d'intégration des développeurs et améliorer la facilité d'utilisation et la compétitivité de l'API.
Vous voulez en savoir plus sur les technologies vidéo ? Consultez notre Guide d'utilisation de HLS.js, ou utilisez directement notre Lecteur M3U8 en ligne pour expérimenter la lecture en streaming.
Plus d'articles intéressants et d'outils pratiques
Indicateurs QoS vidéo, analyse des logs, algorithmes de détection d'anomalies, construire un système de surveillance complet des services vidéo.
Lire la suite →Explorer comment WebAssembly accélère le traitement vidéo, incluant l'utilisation de FFmpeg.wasm, la comparaison des performances et les précautions de développement.
Lire la suite →Comparaison approfondie des principes, des données de latence et des recommandations de sélection des trois technologies de diffusion à faible latence WebRTC, LL-HLS et SRT.
Lire la suite →Utilisez nos outils vidéo en ligne gratuits, pas besoin de téléchargement, traitez les vidéos directement dans le navigateur
Essayer maintenant ➡