2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/maintenance.git synced 2023-12-14 03:33:04 +01:00
maintenance/talks/jres-2022
zimoun 298f1d5f53
talks: Add JRES 2022 tutorial.
* talks/jres-2022: New directory.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-19 02:00:00 +02:00
..
demo talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
src talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
.gitlab-ci.yml talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
do-all.sh talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
do-clean.sh talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
do-pres.sh talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
do-supp.sh talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
README talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
support-notes-additionnelles.20220519.pdf talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00
talk.20220519.pdf talks: Add JRES 2022 tutorial. 2022-06-19 02:00:00 +02:00

# -*- mode:org -*-

Original Git repo: https://gitlab.com/zimoun/jres22-tuto-guix
SWH archive: https://archive.softwareheritage.org/swh:1:rev:8a378f2f833dd28ea71d38e7fc45bac10fe122d5

Visible: https://zimoun.gitlab.io/jres22-tuto-guix/
Web archive: https://web.archive.org/web/20220520150253/https://zimoun.gitlab.io/jres22-tuto-guix/

This repository contains the all material to run the tutorial about Guix
presented at [[https://www.jres.org/][JRES 2022]].  The language of the conference is French, thus this
material is initially written in French.

The version of the presentation for the D-day is tagged 'pres-d-day'
corresponnding to commit 6ff987583173ab5a0bc65708f8bf2482c7390eb0.

* Get PDF from source

#+begin_src bash
  cd src
  guix time-machine -C channels.scm \
       -- shell -C -m manifest.scm  \
       -- rubber --pdf presentation.tex
#+end_src

* Record Gif

#+begin_src bash
  export PS1="\[\033[0;34m\]alice@laptop:\w$ \[\033[0;30m\] "

  if [ -n "$GUIX_ENVIRONMENT" ]; then
      export PS1="\[\033[0;34m\]alice@laptop:\w\[\033[0;30m\] [env]$ "
  fi

#+end_src

#+begin_src bash
  # Fix <https://issues.guix.gnu.org/51202#3>
  # addition of: gtk+ gsettings-desktop-schemas
  guix time-machine -C channels.scm                                \
       -- shell peek ffmpeg         gtk+ gsettings-desktop-schemas \
       -- peek
#+end_src

* Capture Video

#+begin_src bash
  guix time-machine -C channels.scm   \
       -- shell obs                   \
       -- obs
#+end_src

** Resolution (screen from desktop)
  - 1920x1080 Base
  - 1920x1080 Output
  - Downscale filter: Bicubic (sharpened scaling, 16 samples)x
  - Common FPS values 60

** Recording / Streaming
  - 2500 Kbps / audio bitrate 160
  - Medium file size
  - mp4
  - x264

* Chapters

#+begin_src bash
  guix time-machine -C channels.scm   \
       -- shell ffmpeg python-minimal
#+end_src


Be careful, the Python help is a quick too simplistic script.

#+begin_src bash
  ffmpeg -i INPUT.mp4 -f ffmetadata META.txt
  python3 do-chapters.py CHAPS.txt
  cat META.txt CHAPS.txt.meta > CHAPS.meta
  ffmpeg -i INPUT.mp4 -i CHAPS.meta -map_metadata 1 -codec copy OUTPUT.mp4
#+end_src

For each video, end with a title at video length time.

* Merge videos

#+begin_src bash
  guix time-machine -C channels.scm   \
       -- shell ffmpeg python-minimal
#+end_src


The file =videos.txt= contains the list of videos

#+begin_src text
  file 'test.mp4'
  file 'test2.mp4'
#+end_src

#+begin_src bash
  ffmpeg -f concat -safe 0 -i videos.txt -c copy demos.mp4
#+end_src

#+begin_src bash
  ffmpeg -i INPUT.mp4 -f ffmetadata META.txt
  python3 do-chapters.py CHAPS.txt CHAPS2.txt
  cat META.txt merged.meta > video.meta
  ffmpeg -i video.mp4 -i video.meta -map_metadata 1 -codec copy video_chapters.mp4
#+end_src

The Python script =do-chapters.py= reads, at the finest, seconds when it would
require a finer scale.  Especially, see =08-multi-profiles-1.txt=.