Sonder un audio¶
Objectif : extraire les métadonnées d'un fichier audio (durée, codec, bitrate…)
avec probe_audio, via ffprobe.
Ce que vous allez apprendre : probe_audio(path) lance ffprobe (lecture
seule) et retourne un AudioMetadata (durée, codec, bitrate, fréquence, canaux,
conteneur). Il valide aussi que la durée reste sous la limite configurée.
Premier palier du niveau avancé de la progression audio.
Module opt-in — ffprobe requis
Ce starter suppose forge-mvc-audio installé (palier « Installation ») et le
binaire ffprobe présent. Sans lui, la page reste pédagogique (message
d'erreur clair).
Ce que ce starter montre¶
probe_audio(path)sur un fichier stocké ;- l'affichage des métadonnées (
AudioMetadata) ; - un repli pédagogique si
ffprobeest absent ou le flux invalide.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_audio.probe_audio |
Sonder un audio via ffprobe, valider durée. |
Audio |
forge_mvc_audio.AudioMetadata |
Métadonnées retournées (durée, codec, bitrate…). | Audio |
forge_mvc_audio.AudioProbeError |
Erreur si durée trop longue ou flux invalide. | Audio |
Tester¶
Ouvrez https://localhost:8000/audio-probe?path=<original_path> (le chemin renvoyé
à l'upload) : la page affiche durée, codec, bitrate…
Le contrôleur¶
# mvc/controllers/audio_probe_controller.py
import os
from forge_mvc_audio import AudioProbeError, load_audio_config, probe_audio
def _probe_view(rel_path: str) -> dict:
if not rel_path:
return {"path": ""}
cfg = load_audio_config()
abs_path = os.path.join(cfg.storage_root, rel_path)
try:
meta = probe_audio(abs_path)
except AudioProbeError as exc:
return {"path": rel_path, "error": str(exc)}
except Exception as exc: # ffprobe absent, fichier introuvable…
return {"path": rel_path, "error": f"Sondage impossible : {exc}"}
return {"path": rel_path, "meta": {"duration_seconds": meta.duration_seconds, "audio_codec": meta.audio_codec}}
Comprendre ce code¶
- On reconstruit le chemin absolu à partir de
storage_rootet du chemin relatif renvoyé à l'upload :probe_audiolit le fichier réel. ffprobeest lecture seule : aucune transformation, aucune écriture.- On reste pédagogique si
ffprobemanque (binaire système absent).
À retenir¶
probe_audioextrait les métadonnées viaffprobe, sans rien modifier.- La durée est validée contre la limite configurée.
- Un binaire système absent → message clair, pas un plantage.
Après ce starter¶
Vous lisez les métadonnées. La suite : transcoder en MP3.