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.0rc8
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.0rc8.tar.gz | 32.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forge_mvc_audio-1.0.0rc8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.5 kB
Release files / forge_mvc_audio-1.0.0rc8.tar.gz
| Download URL | forge_mvc_audio-1.0.0rc8.tar.gz |
|---|---|
| Size | 32.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
992176ef4d4e56c7e6dbc49978b0894d0acf6b4053a7a6eb2c328f35430cbd6f
|
|
BLAKE2b-256 checksum How to use checksums |
fc9ab8184e3310f440ccc134ad116c3dc63a3a538b798c60f0f33b7414425a80
|
| 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.0rc8-py3-none-any.whl
| Download URL | forge_mvc_audio-1.0.0rc8-py3-none-any.whl |
|---|---|
| Size | 26.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79edcaf81c65184ab9c15ee2a28da9f58278a07415ea23486fb0ec771f76791f
|
|
BLAKE2b-256 checksum How to use checksums |
2e1d9d9ce431e7a57a28e063a6c04e802ca6bb121d18f624c5958717e0de8b74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|