help/content/files/resolution.md

144 lines
5.6 KiB
Markdown
Raw Normal View History

---
date: 2019-04-04T15:59:52+02:00
title: resolution.mp4
weight: 35
---
2021-10-25 08:09:30 +00:00
Ce fichier doit contenir la vidéo permettant la résolution du défi et suivant
étape par étape les étapes expliquées. Si vous pensez qu'un article est plus
approprié, vous pouvez remplacer ce fichier par [`resolution.txt`]({{<relref
"write-up">}})
2019-07-05 16:13:19 +00:00
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
2019-08-12 22:55:08 +00:00
- 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)
2019-07-05 16:13:19 +00:00
## 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
2021-10-22 10:15:40 +00:00
- [OBS](https://obsproject.com/) sur tous les systèmes
2019-07-05 16:13:19 +00:00
- [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
2021-10-25 08:09:30 +00:00
{{% notice note %}}
2021-10-22 10:15:40 +00:00
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
2021-10-22 10:15:40 +00:00
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<Echap>:%s/^/\=printf("%d\\n --> 00:00:00,0000\\n\\n", line('.'))<Entree>
:%s/\\n/\r/g<Entree>
:%s/^1\n --> 00:00:00,0000/1\r00:00:00,0000 -> 00:00:00,0000<Entree>
```
Explication des commandes :
- `99o<Echap>` 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
```