Skip to main content
Pre-release

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 ffprobe et le transcodage exige ffmpeg. forge audio:doctor signale 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 depuis FORGE_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() via ffprobe : 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() via ffmpeg (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) : route GET /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/ffprobe en liste d'arguments (jamais shell=True).
  • Chemins uuid-based : le uuid de 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)

Source distribution for forge-mvc-audio 1.0.0rc9
File Size Uploaded
forge_mvc_audio-1.0.0rc9.tar.gz 32.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for forge-mvc-audio 1.0.0rc9
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page