Diapositives d'une vidéo de séminaire
scripts/ contient un outil sous deux formes qui font la même chose :
| Script | Utilisation sur |
|---|---|
scripts/extract_slides.sh | Linux, macOS, Git Bash ou WSL sur Windows |
scripts/extract_slides.ps1 | Windows PowerShell, pas besoin de bash |
scripts/slides.tex | Modèle Beamer copié par les scripts à côté des images |
Fonctionnement : yt-dlp télécharge le flux vidéo uniquement (pas d'audio, au maximum 1080p). ffmpeg échantillonne à 1 image/s et conserve la première image ainsi que chaque image dont le score de changement de scène dépasse un seuil, de sorte que chaque image conservée est une nouvelle diapositive ou une nouvelle étape de construction. Le journal showinfo donne le temps vidéo de chaque image. Le dossier de sortie contient alors :
slide_001.png,slide_002.png, ... : une par changement de diapositivetimestamps.txt: le temps vidéo de chacune, en secondesframe_list.texetslides.tex:pdflatex slides.texdonne une page par diapositive avec son tempsh:mm:ssen dessous
Étapes
-
Vérifier les outils. Exécutez
ffmpeg -versionetyt-dlp --version. Si l'un manque, installez-le (ci-dessous) ou dites à l'utilisateur comment faire.yt-dlpn'est pas nécessaire pour un fichier local. -
Choisir le script pour la plateforme. Sous Windows, utilisez celui PowerShell sauf si l'utilisateur est clairement dans Git Bash ou WSL.
-
L'exécuter sur l'URL ou le fichier donné par l'utilisateur, dans un dossier nommé d'après la présentation (par exemple
-o speaker_topic_frames), pas dans le dossier de la compétence.bash scripts/extract_slides.sh -u "https://www.youtube.com/watch?v=ID" -o talk_frames bash scripts/extract_slides.sh -i "recording.mp4" -o talk_framespowershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -Url "https://www.youtube.com/watch?v=ID" -OutDir talk_frames powershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -InputFile "C:\path\to\recording.mp4" -OutDir talk_frames-ExecutionPolicy Bypasscontourne le blocage par défaut de Windows sur les scripts, pour cette exécution uniquement. -
Examiner les images avant de faire un rapport. Ouvrez quelques PNG (première, milieu, dernière) et vérifiez :
- Webcam ou vue de l'orateur à côté des diapositives : les mouvements de l'orateur déclenchent de faux changements de diapositive. Trouvez la zone des diapositives dans une image et relancez avec un recadrage,
-c L:H:X:Y/-Crop L:H:X:Y(syntaxe de recadrage ffmpeg : largeur, hauteur, puis coin supérieur gauche). - Trop peu d'images (étapes de construction ou petits changements manqués) : relancez avec un seuil plus bas,
-t 0.05/-Threshold 0.05. - Trop d'images (vidéo, animations, bruit de la caméra) : augmentez-le à
0.2-0.3, ou recadrez. - Doublons : supprimez les PNG supplémentaires et leurs lignes dans
frame_list.tex.
- Webcam ou vue de l'orateur à côté des diapositives : les mouvements de l'orateur déclenchent de faux changements de diapositive. Trouvez la zone des diapositives dans une image et relancez avec un recadrage,
-
Générer le PDF si l'utilisateur le souhaite :
cddans le dossier de sortie et exécutezpdflatex slides.tex(oulatexmk -pdf slides.tex). -
Faire un rapport du nombre d'images, du dossier de sortie, du PDF, et de tout ce qui reste à faire pour l'utilisateur, comme les doublons que vous avez gardés intentionnellement.
Options
| bash | PowerShell | Signification | Valeur par défaut |
|---|---|---|---|
-u URL | -Url URL | Vidéo à télécharger (tout site supporté par yt-dlp) | |
-i FICHIER | -InputFile FICHIER | Vidéo locale au lieu d'un téléchargement | |
-o DOSSIER | -OutDir DOSSIER | Dossier de sortie | video_frames |
-t X | -Threshold X | Seuil de changement de scène, 0-1 | 0.10 |
-c L:H:X:Y | -Crop L:H:X:Y | Recadrer d'abord à la zone des diapositives | aucun |
-b NOM | -Browser NOM | Utiliser les cookies de connexion de ce navigateur (chrome, firefox, edge, ...) | aucun |
Installation des outils
- Windows :
winget install --id yt-dlp.yt-dlpetwinget install --id Gyan.FFmpeg, puis fermez et rouvrez PowerShell pour qu'il les trouve. - macOS :
brew install yt-dlp ffmpeg - Linux :
sudo apt install ffmpeg(ou l'équivalent de la distribution) etpip install -U yt-dlp - LaTeX (uniquement pour le PDF) : TeX Live ou MiKTeX.
latexmkde MiKTeX nécessite Perl ;pdflatexsimple non.
Dépannage
- Enregistrement derrière une connexion (Panopto, Zoom cloud, portail universitaire) :
passez
-b chrome/-Browser chrome(ou le navigateur avec lequel l'utilisateur est connecté). Si yt-dlp ne peut toujours pas l'obtenir, demandez à l'utilisateur de télécharger la vidéo et utilisez-i. $'\r': command not foundoupipefail: invalid option namedans Git Bash : le fichier.sha des fins de ligne Windows. Exécutezsed -i 's/\r$//' scripts/extract_slides.shune fois.- Erreurs yt-dlp sur YouTube ("Sign in to confirm", erreurs de format) : mettez-le d'abord à jour,
yt-dlp -Uoupip install -U yt-dlp, ce qui résout la plupart. - Pas de réseau vers l'hôte vidéo (session sandboxée ou cloud) : dites-le, et donnez à l'utilisateur la commande à exécuter sur sa propre machine.
Ne récupérez que les enregistrements que l'utilisateur est autorisé à consulter, et conservez les images pour ses propres notes et études, sauf si la licence de la présentation dit le contraire.