Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1083,24 +1083,9 @@
"### Lecture du résultat — exemple guidé 1 (fondu enchaîné)\n",
"\n",
"- **Durée `4.00s` et non `5.00s`** : trois segments de 1,667 s mis bout à bout font 5 s, mais chaque fondu fait **chevaucher** deux segments pendant 0,5 s. Avec 2 fondus, on perd 2 × 0,5 = 1 s — la signature du chevauchement (`padding=-0.5`) plutôt qu'un simple enchaînement. Cette durée est celle de la **composition en mémoire** ; plus bas, l'analyse comparative de la Section 3 **re-sonde le fichier écrit** (`ffmpeg.probe` sur `crossfade.mp4` → `4.0` s). C'est cette seconde lecture, indépendante de moviepy, qui ferme la vérification : les deux mesures concordent.\n",
"- **La figure du milieu montre deux cercles semi-transparents** : c'est le fondu enchaîné lui-même — la fin du segment 1 (cercle à droite) et le début du segment 2 (cercle à gauche) sont visibles en même temps, chacun à ~50 % d'opacité. Un simple `FadeOut`/`FadeIn` aurait au contraire fait passer l'image par le noir."
]
},
{
"cell_type": "markdown",
"id": "d2648e6f",
"metadata": {
"papermill": {
"duration": 0.005693,
"end_time": "2026-09-29T23:02:13.395477",
"exception": false,
"start_time": "2026-09-29T23:02:13.389784",
"status": "completed"
},
"tags": []
},
"source": [
"### Interpretation : Manipulations moviepy\n",
"- **La figure du milieu montre deux cercles semi-transparents** : c'est le fondu enchaîné lui-même — la fin du segment 1 (cercle à droite) et le début du segment 2 (cercle à gauche) sont visibles en même temps, chacun à ~50 % d'opacité. Un simple `FadeOut`/`FadeIn` aurait au contraire fait passer l'image par le noir.\n",
"\n",
"**Les manipulations moviepy, en un coup d'œil**\n",
"\n",
"| Opération | Méthode | Description |\n",
"|-----------|---------|-------------|\n",
Expand All @@ -1112,12 +1097,18 @@
"**Points clés** :\n",
"1. moviepy travaille de maniere paresseuse (lazy) : les frames ne sont calculees qu'a l'ecriture\n",
"2. Toujours fermer les clips avec `.close()` pour liberer les handles FFmpeg\n",
"3. Dans moviepy 2.x, `TextClip(text=..., font=chemin_ttf, ...)` rend le texte via Pillow : il faut un fichier de police TTF (ici DejaVuSans, embarquee avec matplotlib)\n",
"\n",
"3. Dans moviepy 2.x, `TextClip(text=..., font=chemin_ttf, ...)` rend le texte via Pillow : il faut un fichier de police TTF (ici DejaVuSans, embarquee avec matplotlib)\n"
]
},
{
"cell_type": "markdown",
"id": "cell-sec3-ffmpeg",
"metadata": {},
"source": [
"## Section 3 : Analyse des metadonnees avec ffmpeg-python\n",
"\n",
"ffmpeg-python permet d'interroger les metadonnees d'un fichier video sans le decoder entierement.\n",
"C'est beaucoup plus rapide que de charger la video complete."
"C'est beaucoup plus rapide que de charger la video complete.\n"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -424,32 +424,15 @@
"id": "6db27ef8",
"metadata": {},
"source": [
"**Lecture chiffree — le verdict OK atteste une generation reelle, pas une extrapolation.** Le JSON commite rend `\"actual_status\": 200`, un task_id `\"431137218855159\"`, `\"status_code\": 0` et `\"verdict\": \"OK\"` : la sonde a debite exactement une generation sur le quota journalier consenti — la cle etait disponible au setup et le parametre de depense leve la garde no_post. La section precedente decrit le regime sans cle (verdict structurel, rien de debite) ; cette sortie-ci est l'autre regime, execute : le verdict est firsthand, c'est la reponse du service, pas une lecture de sa documentation.\n"
]
},
{
"cell_type": "markdown",
"id": "4431ef15",
"metadata": {
"papermill": {
"duration": 0.004214,
"end_time": "2026-08-15T16:36:04.042397",
"exception": false,
"start_time": "2026-08-15T16:36:04.038183",
"status": "completed"
},
"tags": []
},
"source": [
"### Interpretation — le verdict DESCRIPTIF_STUB est une feature, pas un echec\n",
"**Lecture chiffree — le verdict OK atteste une generation reelle, pas une extrapolation.** Le JSON commite rend `\"actual_status\": 200`, un task_id `\"431137218855159\"`, `\"status_code\": 0` et `\"verdict\": \"OK\"` : la sonde a debite exactement une generation sur le quota journalier consenti — la cle etait disponible au setup et le parametre de depense leve la garde no_post. La section precedente decrit le regime sans cle (verdict structurel, rien de debite) ; cette sortie-ci est l'autre regime, execute : le verdict est firsthand, c'est la reponse du service, pas une lecture de sa documentation.\n",
"\n",
"Tant que `MINIMAX_GENAI_API_KEY` n'est pas livree, le notebook reste **execut-able SANS cle** et rend un verdict structurel (`DESCRIPTIF_STUB`) sur la forme des requetes/responses. C'est la **meme posture cle que 04-5** : key-gated skeleton.\n",
"**Et le mode descriptif ?** Tant que `MINIMAX_GENAI_API_KEY` n'est pas livree, le notebook reste **execut-able SANS cle** et rend un verdict structurel (`DESCRIPTIF_STUB`) sur la forme des requetes/responses. C'est la **meme posture cle que 04-5** : key-gated skeleton.\n",
"\n",
"Trois garanties portees par ce mode descriptif :\n",
"\n",
"- **0 generation reelle debit** — la sonde ne POST jamais sans `no_post=False` ET cle ET quota=1. Plafond=1 du cycle 196 preserve.\n",
"- **Verdict structurel reproductible** — la sortie de la sonde est deterministe (meme payload, meme verdict). Permet de tester les exercices sans dependre d'un service externe.\n",
"- **Migration vers mode generation triviale** : passer `MINIMAX_SPEND_QUOTA=1`, livrer `MINIMAX_GENAI_API_KEY`, appeler `probe_minimax_video(payload=..., no_post=False)`. La sonde bascule en mode reel sans autre changement de code."
"- **Migration vers mode generation triviale** : passer `MINIMAX_SPEND_QUOTA=1`, livrer `MINIMAX_GENAI_API_KEY`, appeler `probe_minimax_video(payload=..., no_post=False)`. La sonde bascule en mode reel sans autre changement de code.\n"
]
},
{
Expand Down
Loading