This release is a pre-release and may not be stable for production use.
forge-mvc-audio
Module opt-in Forge pour la gestion audio : upload, sondage de métadonnées, transcodage MP3 et lecture en streaming. Sans état (aucune base de données).
Un opt-in officiel
Cet opt-in suit la version du cœur de Forge et n'a pas de cycle de maturité
propre : sa version est celle du pyproject.toml racine (OPTINS-MATURITY-FOLLOWS-CORE-001).
forge-mvc-audio fournit une chaîne audio complète et sobre, calquée sur
forge-mvc-video mais sans la machinerie à état (pas de table SQL, pas de
suivi de jobs, pas de file de transcodage). C'est un choix délibéré : les
opérations audio sont synchrones et la lecture retrouve les fichiers par uuid
sur le disque.
ffmpeg / ffprobe sont des binaires système (pas des dépendances pip). Le module se branche sans eux (le service de lecture fonctionne), mais le sondage exige
ffprobeet le transcodage exigeffmpeg.forge audio:doctorsignale leur absence.
Installation (mode éditable depuis les sources) :
pip install -e packages/forge-mvc-audio/
Ce que contient le module
config—AudioConfig+load_audio_config()(configuration depuisFORGE_AUDIO_*, valeurs par défaut sûres).storage— disposition uuid-based des fichiers (le nom utilisateur n'apparaît jamais dans le chemin → anti-traversal par construction).probe—probe_audio()viaffprobe: durée, codec, bitrate, sample rate, nombre de canaux, conteneur. Sert aussi de validation profonde (rejet d'un fichier sans flux audio).ingest—ingest_audio(data, filename): valide (taille, extension), stocke la source, retourne un enregistrement (uuid, chemin, taille, MIME).transcode—transcode_to_mp3()viaffmpeg(profil MP3 192 kbps, stéréo, métadonnées d'origine retirées). Constructeurs de commande purs, runner injectable (testable sans ffmpeg).http—register_audio_routes(router): routeGET /audio/{uuid}servie en streaming HTTP Range (seek), Bearer token optionnel (FORGE_AUDIO_API_TOKEN).cli.doctor—forge audio:doctor: diagnostic statique (package, config, ffprobe, ffmpeg, routes).
Formats acceptés à l'upload
mp3, wav, ogg, flac, m4a, aac. La sortie de transcodage est MP3.
Sécurité
- Invocation
ffmpeg/ffprobeen liste d'arguments (jamaisshell=True). - Chemins uuid-based : le
uuidde l'URL n'est qu'une clé de lookup, validée comme un UUID — aucun path traversal. - Token Bearer optionnel sur la route de lecture (mode local ouvert par défaut).
- L'auth vit dans ce module, jamais dans Forge Core.
Configuration (FORGE_AUDIO_*)
| Variable | Défaut | Rôle |
|---|---|---|
FORGE_AUDIO_FFMPEG_BIN |
ffmpeg |
binaire ffmpeg |
FORGE_AUDIO_FFPROBE_BIN |
ffprobe |
binaire ffprobe |
FORGE_AUDIO_STORAGE_ROOT |
storage/audio |
racine de stockage |
FORGE_AUDIO_MAX_UPLOAD_MB |
200 |
taille max d'upload |
FORGE_AUDIO_MAX_DURATION_SECONDS |
7200 |
durée max (2 h) |
FORGE_AUDIO_API_TOKEN |
(absent) | Bearer token de lecture (optionnel) |
Release files for forge-mvc-audio 1.0.0rc9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forge_mvc_audio-1.0.0rc9.tar.gz | 32.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forge_mvc_audio-1.0.0rc9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.4 kB
Release files / forge_mvc_audio-1.0.0rc9.tar.gz
| Download URL | forge_mvc_audio-1.0.0rc9.tar.gz |
|---|---|
| Size | 32.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
288477854408110d3bc4a0242340e42833acf363e8e5b3ede3ded54e75a6d110
|
|
BLAKE2b-256 checksum How to use checksums |
0e560492a7b22d4fdcbf80266e4ce49e3df09e228c6a8e37a0e1787b952f0e95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / forge_mvc_audio-1.0.0rc9-py3-none-any.whl
| Download URL | forge_mvc_audio-1.0.0rc9-py3-none-any.whl |
|---|---|
| Size | 26.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
233e07ee103d8e9f7acf3b4910ad2eae888b085221b89434c0ef1b03313d82b9
|
|
BLAKE2b-256 checksum How to use checksums |
e64ced3026922c47365e5302bfe9b77f037e74e18aa312757e7c6008c07e884c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|