Aller au contenu
Table des matières

GreenScreenVideotoAlphaPNGs : Un pipeline d’images transparentes

GreenScreenVideotoAlphaPNGs sépare acquisition vidéo, extraction des images et suppression du fond de l’encodage final. Les PNG RGBA servent de sortie intermédiaire vers un GIF ou une vidéo avec canal alpha.

Application et outils
  • Mis à jour
  • 1
  • C++ · 57.96%
  • MIT
Composants documentés
2Explorer les modules
Documents source
1Lire les instructions
Langages du dépôtC++ 57.96%5

Parts calculées à partir des octets GitHub Linguist.

C++57.96%
57.96%41 566 octets
Python32.32%
32.32%23 177 octets
JavaScript7.93%
7.93%5 687 octets
PowerShell0.94%
0.94%673 octets
Langage%Octets
C++57.96%41 566
Python32.32%23 177
JavaScript7.93%5 687
PowerShell0.94%673
Shell0.85%610

1. Aperçu

1.1. Pourquoi il existe

Pipeline de traitement OpenCV convertissant des vidéos fond vert en séquences PNG avec canal alpha.

1.2. Cas d’usage

Préparation d'assets d'animation 2D pour la réalité augmentée.

2. Cas d’utilisation

Un outil Python qui transforme une vidéo sur fond vert en PNG transparents, GIF ou .mov alpha pour Lens Studio.

Diagramme de cas d’utilisation de GreenScreenVideotoAlphaPNGs : Télécharger une vidéo par URL; Découper la vidéo en images; Retirer le fond vert; Créer un GIF transparent; Encoder un .mov avec alphaGreenScreenVideotoAlphaPNGsTélécharger une vidéo par URLDécouper la vidéo en imagesRetirer le fond vertCréer un GIF transparentEncoder un .mov avec alphaCréateur de filtres AR«système»YouTube (yt-dlp)«système»ffmpeg
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
Télécharger une vidéo par URL
Créateur de filtres ARYouTube (yt-dlp)

greenscreen convert accepte une URL YouTube ; convert.py appelle download_video() et download_audio() de download.py, qui s’appuient sur yt-dlp.

Découper la vidéo en images
Créateur de filtres ARffmpeg

frames.py écrit des PNG numérotés (0.png, 1.png…) avec ffmpeg, ou avec OpenCV si l’option --no-ffmpeg est donnée.

Retirer le fond vert
Créateur de filtres AR

chroma.py calcule une distance YCbCr à la couleur clé (pixel 1,1 par défaut, tolérance 50–130) et écrit des PNG RVBA dans un dossier voisin *_alpha.

Créer un GIF transparent
Créateur de filtres ARffmpeg

greenscreen gif <dossier> utilise par défaut numpngw et l’extension facultative APNGLib, ou une palette ffmpeg avec --fast-ffmpeg ; le GIF est écrit à côté du dossier.

Encoder un .mov avec alpha
Créateur de filtres ARffmpeg

greenscreen video <dossier> --fps 30 encode la séquence en Videogen-<horodatage>.mov avec le codec qtrle ou prores_4444.

2.1. Scénario : D’un clip sur fond vert à une animation Lens Studio

  1. Lancer bash install.sh (ou .\install.ps1 sous Windows), puis uv run greenscreen --help.
  2. Lancer uv run greenscreen convert clip.mp4 pour extraire les images dans clip/ et les images détourées dans clip_alpha/.
  3. Les fichiers qui commencent par le nom du clip sont déplacés dans project_clip/, sauf avec --no-project-dir.
  4. Lancer uv run greenscreen gif project_clip/clip_alpha --fast-ffmpeg pour obtenir un GIF transparent sans APNGLib.
  5. Dans Lens Studio, passer par Resources → Add New → 2D animation from files et choisir les PNG *_alpha.

Fichiers consultésREADME.mdpyproject.tomlsrc/greenscreen/cli.pysrc/greenscreen/convert.pysrc/greenscreen/chroma.pysrc/greenscreen/frames.pysrc/greenscreen/gif_pipeline.pysrc/greenscreen/video_pipeline.py

3. Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

README.md · Quick start (uv)
.\install.ps1
uv run greenscreen --help
README.md · Quick start (uv)
bash install.sh
uv run greenscreen --help
README.md · APNGLib (optional C++ extension)
$env:SKIP_APNGLIB='1'; uv sync --extra dev
README.md · APNGLib (optional C++ extension)
$env:SKIP_APNGLIB='0'; uv sync --extra dev

4. Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

4.1. Quick start (uv)

README.md

Install dev tools: uv sync –extra dev
Lire les instructions complètes ↗

4.2. Prerequisites

README.md

  • Python 3.12+ (repo pins .python-version to 3.12 for uv).
  • ffmpeg on PATH for fast frame extract and for gif –fast-ffmpeg / video. A fallback binary can come from imageio-ffmpeg if PATH has no ffmpeg.
Lire les instructions complètes ↗
Configuration et utilisation

4.3. CLI

README.md

Legacy entry points still work and forward to the same CLI:

  • python GreenVideotoAlphaPNGs.py → greenscreen convert
  • python GIFGenerator.py → greenscreen gif
  • python VideoGenerator.py → greenscreen video
Lire les instructions complètes ↗
Documentation source

1 documents lus parmi 1 candidats.

5. Fonctions et composants 2

Étape de conversion
La commande Typer convert délègue à run_convert. Elle accepte une vidéo locale ou un lien et peut privilégier FFmpeg ou imposer OpenCV. Le module chroma traite la transparence séparément de l’acquisition.
Choix d’encodage
gif et video prennent un dossier de PNG. Le GIF propose une palette FFmpeg; video accepte qtrle ou prores_4444. Cette étape permet de changer cadence et format sans recommencer l’acquisition.

6. Architecture

Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de GreenScreenVideotoAlphaPNGs
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
  n0["Vidéo ou lien"]
  n1["Extraction des images"]
  n2["Suppression du fond"]
  n3["Séquence PNG RGBA"]
  n4["Encodeur GIF"]
  n5["Encodeur vidéo alpha"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
  n3 --> n4
  n3 --> n5
Version texte du diagramme
  • Vidéo ou lien → Extraction des images
  • Extraction des images → Suppression du fond
  • Suppression du fond → Séquence PNG RGBA
  • Séquence PNG RGBA → Encodeur GIF
  • Séquence PNG RGBA → Encodeur vidéo alpha
Suivre un parcours dans le code

Suivez cmd_convert vers run_convert, puis utilisez ses PNG dans cmd_video. Conserver ces images permet d’inspecter les contours de transparence avant que la compression les masque.

7. Dossier technique

Établi à partir du code au commit b487e51 (22 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.

7.1. Couches et modules

Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.

Mermaid Vue en couches
flowchart TB
  subgraph L_interface["Points d’entrée et API"]
    direction TB
    interface_0["greenscreen<br/>1 fichier"]
  end
  subgraph L_application["Services applicatifs"]
    direction TB
    application_0["TemplatesCutout/Public<br/>4 fichiers"]
    application_1["greenscreen<br/>2 fichiers"]
  end
  subgraph L_infrastructure["Données et infrastructure"]
    direction TB
    infrastructure_0["APNGLib_fix<br/>1 fichier"]
    infrastructure_1["APNGLib_fix/APNGLib<br/>1 fichier"]
  end
  subgraph L_core["Source principale"]
    direction TB
    core_0["(root)<br/>6 fichiers"]
    core_1["greenscreen<br/>6 fichiers"]
  end
  subgraph L_tests["Tests"]
    direction TB
    tests_0["tests<br/>2 fichiers"]
  end
  L_interface ~~~ L_application
  L_application ~~~ L_infrastructure
  L_infrastructure ~~~ L_core
  L_core ~~~ L_tests
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
greenscreenSource principale90.py
(root)Source principale60.py .ps1 .sh
TemplatesCutout/PublicServices applicatifs40.js
APNGLib_fixDonnées et infrastructure10.py
APNGLib_fix/APNGLibDonnées et infrastructure12.cpp

7.2. Modèle C4

Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.

UML 1 · Contexte du système
1 · Contexte du système

La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System(SYS, "GreenScreenVideotoAlphaPNGs", "GreenScreenVideotoAlphaPNGs sépare acquisition vidéo, extraction des …")
Rel(P_cli, SYS, "Utilise")
@enduml
UML 2 · Conteneurs
2 · Conteneurs

Un niveau plus près : les parties qui s’exécutent séparément dans le projet, leur langage principal et le chemin des appels entre elles. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
Person(P_cli, "Utilisateur CLI")
System_Boundary(SYS, "GreenScreenVideotoAlphaPNGs") {
  Container(APP, "GreenScreenVideotoAlphaPNGs", "Python")
}
Rel(P_cli, APP, "Utilise")
@enduml
UML 3 · Composants et couches
3 · Composants et couches

Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.

Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "GreenScreenVideotoAlphaPNGs") {
Boundary(L0, "Points d’entrée et API", "layer") {
Component(M0_0, "greenscreen", "Python", "1 fichiers")
}
Boundary(L1, "Services applicatifs", "layer") {
Component(M1_0, "TemplatesCutout/Public", "JavaScript", "4 fichiers")
Component(M1_1, "greenscreen", "Python", "2 fichiers")
}
Boundary(L2, "Données et infrastructure", "layer") {
Component(M2_0, "APNGLib_fix", "Python", "1 fichiers")
Component(M2_1, "APNGLib_fix/APNGLib", "C++", "1 fichiers")
}
Boundary(L3, "Source principale", "layer") {
Component(M3_0, "(root)", "Python, .ps1, .sh", "6 fichiers")
Component(M3_1, "greenscreen", "Python", "6 fichiers")
}
Boundary(L4, "Tests", "layer") {
Component(M4_0, "tests", "Python", "2 fichiers")
}
}
@enduml
UML 4 · Code
4 · Code

Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "GreenScreenVideotoAlphaPNGs" {
package "lib/APNGLib_fix/APNGLib/APNGLib.cpp" as F0 {
class "APNGFrame" as T0_0 {
}
class "CHUNK" as T0_1 {
}
}
object "src/greenscreen/gif_pipeline.py" as FN0 {
  _list_pngs()
  create_gif_apnglib()
  create_gif_ffmpeg()
  create_gif()
}
object "src/greenscreen/cli.py" as FN1 {
  cmd_convert()
  cmd_gif()
  cmd_video()
}
object "src/greenscreen/chroma.py" as FN2 {
  _alpha_from_cb_cr()
  green_screen_rgba()
  remove_green_dir()
}
object "src/greenscreen/convert.py" as FN3 {
  _is_probably_url()
  run_convert()
}
object "src/greenscreen/download.py" as FN4 {
  video_title()
  download_video()
  _hook()
  download_audio()
  _hook()
}
}
@enduml

7.3. Interface publique

Du code extérieur peut utiliser tout ce qui est listé ici. Le projet déclare aussi 2 types publics.

UML Cas d’utilisation
Cas d’utilisation

Chaque acteur est un type d’appelant, relié à ce qu’il peut demander au projet. Rendu avec uml-mcp.

Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
left to right direction
actor "Utilisateur CLI" as A_cli
rectangle "GreenScreenVideotoAlphaPNGs" {
  usecase "Commande convert" as U0
  usecase "Commande gif" as U1
  usecase "Commande video" as U2
}
A_cli --> U0
A_cli --> U1
A_cli --> U2
@enduml

Ligne de commande 3

Points d’entrée

7.4. Interface privée

Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).

Assistant préfixé _
8
Fonction static (locale au fichier)
2

7.5. Entités et modèle de données 2

Mermaid Diagramme de classes des entités
classDiagram
  direction LR
  class E0["APNGFrame"] {
  }
  class E1["CHUNK"] {
  }

Une flèche relie un champ à l’entité que son type nomme.

EntitéNaturePremiers champs
APNGFrameStructure de données
CHUNKStructure de données

7.6. Logique métier

Aucune classe n’a été extraite. Voici les plus gros fichiers source et leurs fonctions.

lib/APNGLib_fix/APNGLib/APNGLib.cpp
Aucune fonction nommée.
src/greenscreen/gif_pipeline.py
_list_pngs, create_gif_apnglib, create_gif_ffmpeg, create_gif
src/greenscreen/cli.py
cmd_convert, cmd_gif, cmd_video
src/greenscreen/chroma.py
_alpha_from_cb_cr, green_screen_rgba, remove_green_dir
src/greenscreen/convert.py
_is_probably_url, run_convert
src/greenscreen/download.py
video_title, download_video, _hook, download_audio, _hook

7.7. Stack et dépendances

Python pyproject.toml 11 à l’exécution, 3 dev

Python >=3.12

Ouvrir le manifeste

Dépendances externes

14 paquets déclarés (11 à l’exécution, 3 pour le développement) dans pyproject.toml.

Tableau des paquets 14
Dépendances externes
PaquetVersionUsageRôleRegistre
typer>=0.12exécutionLigne de commandepypi.org
rich>=13.7exécutionLigne de commandepypi.org
tqdm>=4.66exécutionLigne de commandepypi.org
pillow>=10.0exécutionGraphisme, image et 3Dpypi.org
numpy>=1.26exécutionAnalyse de donnéespypi.org
opencv-python>=4.9exécutionGraphisme, image et 3Dpypi.org
natsort>=8.4exécutionSimple yet flexible natural sorting in Python.pypi.org
imageio>=2.33exécutionGraphisme, image et 3Dpypi.org
imageio-ffmpeg>=0.4.9exécutionGraphisme, image et 3Dpypi.org
numpngw>=0.1.2exécutionWrite numpy array(s) to a PNG or animated PNG file.pypi.org
yt-dlp>=2024.1exécutionA feature-rich command-line audio/video downloaderpypi.org
pytest>=8.0développementTestspypi.org
pytest-cov>=4.1développementTestspypi.org
ruff>=0.8développementAnalyse et formatagepypi.org

7.8. Pipeline CI/CD

Aucun pipeline CI/CD dans le dépôt. Le code se construit et se lance à la main, comme décrit plus haut.

7.9. Déploiement

Mermaid Schéma de déploiement
flowchart LR
  repo[("Dépôt GitHub")]
  local["Poste local<br/>Python"]
  repo -->|"cloner et lancer"| local

Le dépôt ne contient ni Dockerfile, ni fichier Compose, ni configuration d’hébergement : le code s’exécute sur le poste qui le clone.

7.10. Sécurité

Chaîne d’approvisionnement

Variables d’environnement 1

La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.

SKIP_APNGLIB

7.11. Tests automatisés

Fichiers de test
2
Fichiers source
21
Cas de test, environ
3
Tests unitaires
2

Couverture de code

Aucun rapport chiffré de couverture dans les sources analysées.

Où sont les tests

tests 2

Rien trouvé pour: Services, Base de données, Intégrations externes, Supervision.

8. Types et structure des fichiers

2 types déclarés, dont 2 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class t6f7d26235a07["CHUNK"] {
  <<struct>>
}
class t05c53bd05b93["APNGFrame"] {
  <<struct>>
}

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

9. Référence

21 / 21 fichiers admissibles lus (45 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

11. Fichiers à lire 3

12. Glossaire

Dépôt

Les fichiers source, la configuration et l’historique versionné d’un projet.

README

Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.

Dépendance

Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.

Interface en ligne de commande

Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.

Compilation

Les étapes qui transforment les sources et dépendances en programme exécutable ou en livrable distribuable.

Décodeur vidéo

Un composant qui reconstruit des images à partir d’un flux vidéo compressé. Le décodage et l’affichage sont des étapes distinctes.

13. Références

  1. antoinebou12. (2026, 5 novembre). GreenScreenVideotoAlphaPNGs. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). GreenScreenVideotoAlphaPNGs: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). src/greenscreen/cli.py. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). src/greenscreen/chroma.py. [Source file] github.com.
  5. antoinebou12. (2026, 5 novembre). src/greenscreen/video_pipeline.py. [Source file] github.com.
  6. Boucher, A. (2026, 23 octobre). GreenScreenVideotoAlphaPNGs : Un pipeline d’images transparentes. [Project article] antoineboucher.info.

Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.