--- date: 2019-04-04T15:59:52+02:00 title: resolution.mp4 weight: 35 --- Ce fichier doit contenir la vidéo de résolution, montée selon ces caractéristiques : - format MP4 (H.264 + AAC + 3GPP Timed Text) - utiliser les sous-titres pour commenter les étapes ; pas de commentaires audio - environ 2' par vidéo : maxi 1'30" pour les challenges simples, 3-4' maxi - résolution 1080p maximum (il faut faire en sorte que la solution soit lisible sur des écrans relativements petits, n'hésitez pas à aggrandir la police de vos terminaux et applications) ## Exemple de logiciel de capture d'écran {{% notice warning %}} N'utilisez pas de logiciel en version de « démonstration » : il faudrait payer la licence pour publier la vidéo. {{% /notice %}} - `ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f alsa -ac 2 -i hw:0 -strict experimental resolution.mp4` - [recordMyDesktop](http://recordmydesktop.sourceforge.net/) sous Linux - [Screencast Capture Lite](http://cesarsouza.github.io/screencast-capture/) pour Windows - [OBS](https://obsproject.com/) sur tous les systèmes - [Aegisub](http://www.aegisub.org/), [Gnome Subtitle](http://gnomesubtitles.org/), emacs/vim, ... pour les sous-titres ## Rendu Les vidéos de résolution sont affichées uniquement sur la version du site statique, publiée après le challenge. ![Rendu resolution.mp4](exercice_resolution.png) ## Tuto de création de vidéo de résolution {{% notice info %}} Section contribuée par Mahe Charpy. {{% /notice %}} ### Filmer la résolution Pour filmer la résolution, OBS est pas mal. Les autres solutions proposées au dessus fonctionneront également N'hésitez pas a retirer du cadre les informations non essentielles (`i3-nagbar` par exemple) N'hésitez pas à faire cette résolution dans votre `/tmp` afin que les chemins de fichiers ne présentent que les informations nécessaires ### Monter la vidéo Sur Linux, OpenShot ([https://www.openshot.org/](https://www.openshot.org/)) est pas mal pour ça. Sur Arch vous pouvez l'obtenir avec la commande ```bash yay -S openshot ``` Vous pouvez ensuite lancer openshot-qt pour ouvrir le logiciel de montage ![Interface OpenShot](interface_openshot.png) Importer vos vidéos ![Importer des vidéos](openshot_import_video.png) Placer vos vidéos sur la barre de montage ![Le montage des vidéos](openshot_montage.png) Vous pouvez maintenant découper et réorganiser la vidéo comme vous le souhaitez. Pensez à enregistrer régulièrement (ctrl + s) car openshot demande pas mal de RAM et il arrive que le noyau passe pas l'OOM killer (#virli) pour récupérer cette RAM Une fois le montage fait, exporter la vidéo (ctrl + e) #### 3 raccourcis sympathiques sur openshot - ctrl + j : Coupe la bande vidéo au niveau du curseur de lecture et ne garde que ce qui se trouve après le curseur de lecture - ctrl + k : Coupe la bande vidéo au niveau du curseur de lecture et garde les 2 cotés - ctrl + l : Coupe la bande vidéo au niveau du curseur de lecture et ne garde que ce qui se trouve avant le curseur de lecture ### Les sous titres Pour faire les sous-titres, nous allons passer par un fichier `.srt` ```bash vim sous_titres.srt ``` Dans vim, faire la suite de touches suivante ```bash 99o:%s//\=printf("%d\\n --> 00:00:00,0000\\n\\n", line('.')) :%s/\\n/\r/g :%s/^1\n --> 00:00:00,0000/1\r00:00:00,0000 -> 00:00:00,0000 ``` Explication des commandes : - `99o` ajoute 99 lignes vides au fichier. On obtient un fichier de 100 lignes vides - `:%s//\=printf("%d\\n --> 00:00:00,0000\\n\\n", line('.'))` met la string `%d\n --> 00:00:00,0000\n\n` sur chaque ligne en remplaçant le %d par le numero de ligne - `:%s/\\n/\r/g` remplace les `\n` par des vrais retours a la ligne - `:%s/^1\n --> 00:00:00,0000/1\r00:00:00,0000 -> 00:00:00,0000` Ajoute un timestamp de debut a la première entrée Vous devriez maintenant avoir un fichier (presque) au format d'un fichier de sous titres avec 100 entrées ![Le fichier obtenu par les commandes précédentes](sous_titres_debut.png) Ce fichier n'a pas le format d'un fichier de sous titre car les lignes de timestamp n'ont pas de timestamp de début. Nous l'ajouterons à la fin, une fois que tous les timestamps de fin auront été définis. Remplir le fichier de sous-titres en définissant bien les timestamps de fin d'apparition du sous titre ![Les possibilités de sous-titres et timestamps](sous_titres_exemple.png) Une fois les sous titres finis, supprimer les entrées non complétées restantes et utiliser la commande vim suivante ```bash :%s/-> \([0-9:,]*\)0\n\(\_.\{-}\)\n -/-> \10\r\2\r\11 -/g ``` Cette commande a pour effet d'ajouter les timestamps de début de sous titre. Pour cela, on récupère le timestamp de fin du sous-titre précédent et on y ajoute 1 milliseconde afin que les sous-titres ne se chevauchent pas Attention, il faut que les timestamps soient tous à un nombre de millisecondes multiple de 10 On obtient un fichier avec cette forme ![Résultat de la commande](sous-titres_final.png) Vous pouvez vérifier que les sous titres vous conviennent en ouvrant la vidéo dans VLC et en y ajoutant les sous-titres ![Afficher des sous-titres sur vlc](vlc_sous_titres.png) Une fois que vous êtes content de vos sous titres, ajouter les sous-titres directement dans la video avec la commande suivante : ```bash ffmpeg -i votre_video.mp4 -vf subtitles=sous_titres.srt resolution_subtitled.mp4 ```