Diagnostiquer le module Vidéo¶
Objectif : vérifier que le module vidéo est sain — y compris la présence des binaires de transcodage.
Ce que vous allez apprendre : le diagnostic Forge Vidéo. La commande
forge video:doctor vérifie l'ensemble (paquet, config, migration, ffprobe,
ffmpeg, base). Ce starter expose en JSON son sous-ensemble non invasif —
les contrôles qui ne touchent pas la base — directement dans l'application.
Dernier palier du niveau avancé de la progression vidéo, après Transcoder une vidéo.
Ce que ce starter montre¶
- l'appel des vérifications non invasives du diagnostic :
check_package_importable— le paquet est installé,check_config_loadable— la configuration se charge,check_migration_present— la migrationvideosest disponible,check_ffprobe_present/check_ffmpeg_present— les binaires de transcodage sont localisés ;
- un statut global
healthy+ le détail de chaque contrôle, en JSON.
Le diagnostic complet (table en base) reste la commande forge video:doctor.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
check_package_importable / check_config_loadable / check_migration_present |
Vérifications non invasives. | Parcours vidéo |
check_ffprobe_present / check_ffmpeg_present |
Localiser les binaires de transcodage. | Parcours vidéo |
forge video:doctor (CLI) |
Diagnostic complet (dont la base). | Parcours vidéo |
Tester¶
Ouvrez https://localhost:8000/video-doctor : la réponse JSON donne healthy et
la liste des contrôles avec leur statut. Si ffmpeg/ffprobe ne sont pas installés,
les contrôles correspondants le signalent — utile avant de transcoder.
Pour le diagnostic complet, en ligne de commande :
forge video:doctor # paquet + config + migration + ffprobe + ffmpeg
forge video:doctor --db # + vérifie la table videos
Le contrôleur¶
# mvc/controllers/video_doctor_controller.py
from forge_mvc_video.cli.doctor import (
check_config_loadable,
check_ffmpeg_present,
check_ffprobe_present,
check_migration_present,
check_package_importable,
)
_SAFE_CHECKS = (
check_package_importable, check_config_loadable, check_migration_present,
check_ffprobe_present, check_ffmpeg_present,
)
class VideoDoctorController(BaseController):
@staticmethod
def index(request: Request) -> Response:
checks = []
for check in _SAFE_CHECKS:
result = check()
checks.append({"status": result.status, "name": result.name, "detail": result.detail})
healthy = all(c["status"] == "ok" for c in checks)
return Response.json({"healthy": healthy, "checks": checks})
Comprendre ce code¶
- On n'appelle que les contrôles sûrs : aucun ne touche la base, et les checks ffprobe/ffmpeg se contentent de localiser les binaires (pas de transcodage).
- Chaque contrôle renvoie un
status, unnameet undetail— on les expose tels quels. - Pour le contrôle invasif (table
videos), on délègue à la CLIforge video:doctor --db.
À retenir¶
forge video:doctordiagnostique le module ; ses contrôles non invasifs sont réutilisables en application.- Vérifier la présence de ffmpeg/ffprobe évite les surprises au transcodage.
- Un diagnostic sépare le sûr (paquet, config, binaires) de l'invasif (base) — on n'effleure la base que sur demande.
Après ce starter¶
Vous avez terminé le niveau avancé et toute la progression vidéo : sonde, transcodage, diagnostic. Faites le point dans le bilan du niveau.