Forge Audio — module opt-in pour l'upload, le sondage de métadonnées (ffprobe), le transcodage MP3 (ffmpeg) et la lecture audio en streaming (HTTP Range). Sans état : aucune base de données. Worker CLI forge audio:doctor.
Project description
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).
Statut : Beta — opt-in officiel
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) |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file forge_mvc_audio-1.0.0b17.tar.gz.
File metadata
- Download URL: forge_mvc_audio-1.0.0b17.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ba2f7b8def1c41f1938dfbdb8ea4e8531af5612ada74217355cf973a9681f14
|
|
| MD5 |
e7e1815de30eca8468140c0eed590498
|
|
| BLAKE2b-256 |
38bfbf77eabe9c5628b91fc13f9bb059e14bcd843f0ebe753ae63e791812e0d9
|
File details
Details for the file forge_mvc_audio-1.0.0b17-py3-none-any.whl.
File metadata
- Download URL: forge_mvc_audio-1.0.0b17-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c668d22bf019ef3f68919a40cc98506bac5bb2543e6ad2cfdb3c3e565e5caf0
|
|
| MD5 |
a0197709054aabfaf7bee4ea3618b783
|
|
| BLAKE2b-256 |
22f979a379c0b33766e1d55f0a20347b450168a9a9f4ce8b7c65f7786e637b19
|