summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.org8
-rw-r--r--host_vars/media/crypted8
-rw-r--r--host_vars/upload/crypted8
-rw-r--r--roles/obs/defaults/main.yml2
-rw-r--r--roles/obs/tasks/track.yml2
-rw-r--r--roles/obs/templates/i3-config2
-rwxr-xr-xroles/obs/templates/overlay20
-rwxr-xr-xroles/obs/templates/play-with-intro9
-rw-r--r--roles/obs/templates/set-overlay20
-rw-r--r--roles/pad/tasks/main.yml1
-rw-r--r--roles/prerec/templates/Makefile66
-rw-r--r--roles/publish/tasks/emacs.yml2
-rw-r--r--roles/publish/tasks/main.yml2
-rw-r--r--roles/publish/templates/emacsconf-config.el4
14 files changed, 100 insertions, 54 deletions
diff --git a/README.org b/README.org
index 942fc92..fe36bef 100644
--- a/README.org
+++ b/README.org
@@ -128,6 +128,9 @@ Then call =process-prerec.sh $file=. It will launch some screen sessions for ree
3. Update the following variables in your Emacs configuration:
- emacsconf-backstage-dir
- emacsconf-backstage-phase
+4. Create ~/proj/emacsconf/{year}/cache
+5. elisp:emacsconf-publish-talks-json-to-files
+6. [[elisp:emacsconf-publish-backstage-index]]
* Upload service
=ansible-playbook -i inventory.yml prod-playbook.yml --tags upload --ask-become-pass=
@@ -185,6 +188,9 @@ ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags publis
With docker:
https://stackoverflow.com/questions/24738264/how-to-test-ansible-playbook-using-docker
* Pad
+
+Before generating pads, use elisp:emacsconf-publish-talks-json-to-files to create the talks.json used.
+
** Production
ansible-playbook -i inventory.yml prod-playbook.yml --tags pad,proxy
@@ -199,6 +205,8 @@ ansible-playbook -i inventory.yml prod-playbook.yml --tags proxy
To prepare for a load test:
ansible-playbook -i inventory.yml prod-playbook.yml --tags pad --extra-vars='{"etherpad_load_test": true}'
+To create pads:
+ansible-playbook -i inventory.yml prod-playbook.yml --tags create-pads
** Docker
Creating:
ansible-playbook -i docker-inventory.yml docker-playbook.yml --tags pad
diff --git a/host_vars/media/crypted b/host_vars/media/crypted
deleted file mode 100644
index 6636846..0000000
--- a/host_vars/media/crypted
+++ /dev/null
@@ -1,8 +0,0 @@
-$ANSIBLE_VAULT;1.1;AES256
-34666233323231386163306334663633623662616532353239646534393434303631616362346131
-3062393462633262646337363633616461623130343361330a626331663264663238623930633631
-65623964383166393064646266353732386461396135333731373438316236303535326663383338
-6565643931316139300a393533333034306462636164613731376661393865313430636366666334
-31376239656566393935343032316162386138373734623232326133386335313563643139386165
-33383333633163633364333361396430646238343238343031666363643430623632393935383237
-323163353239663862373630326234616231
diff --git a/host_vars/upload/crypted b/host_vars/upload/crypted
deleted file mode 100644
index 6636846..0000000
--- a/host_vars/upload/crypted
+++ /dev/null
@@ -1,8 +0,0 @@
-$ANSIBLE_VAULT;1.1;AES256
-34666233323231386163306334663633623662616532353239646534393434303631616362346131
-3062393462633262646337363633616461623130343361330a626331663264663238623930633631
-65623964383166393064646266353732386461396135333731373438316236303535326663383338
-6565643931316139300a393533333034306462636164613731376661393865313430636366666334
-31376239656566393935343032316162386138373734623232326133386335313563643139386165
-33383333633163633364333361396430646238343238343031666363643430623632393935383237
-323163353239663862373630326234616231
diff --git a/roles/obs/defaults/main.yml b/roles/obs/defaults/main.yml
index 1c193e0..d95b900 100644
--- a/roles/obs/defaults/main.yml
+++ b/roles/obs/defaults/main.yml
@@ -3,7 +3,7 @@ ff_vcustom: rt cpu-used=5 threads=2 error-resilient=1 crf=30 g=120 minrate=1.5M
ff_vbitrate: 1500
ff_vgopsize: 120
obs_profile_path: /home/{{ emacsconf_user }}/.config/obs-studio/basic/profiles
-emacsconf_asset_dir: /data/{{ emacsconf_id }}/assets
+emacsconf_asset_dir: /data/{{ emacsconf_id }}/shared/{{ emacsconf_year }}/assets
mumble_server: mumble.emacsconf.org
background_music_dir: "{{ emacsconf_asset_dir }}/music"
background_music_volume: 30
diff --git a/roles/obs/tasks/track.yml b/roles/obs/tasks/track.yml
index 3d3a8d6..cbd4b39 100644
--- a/roles/obs/tasks/track.yml
+++ b/roles/obs/tasks/track.yml
@@ -103,7 +103,7 @@
include_tasks: emacs.yml
- name: Set up symbolic links
file:
- src: "/data/{{ emacsconf_id }}/assets/stream"
+ src: "/data/{{ emacsconf_id }}/shared/{{ emacsconf_year }}/assets/stream"
dest: "~{{ emacsconf_user }}/stream"
state: link
diff --git a/roles/obs/templates/i3-config b/roles/obs/templates/i3-config
index 1787b64..31a7b40 100644
--- a/roles/obs/templates/i3-config
+++ b/roles/obs/templates/i3-config
@@ -23,7 +23,7 @@ font pango:monospace 8
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
-exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
+# exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
diff --git a/roles/obs/templates/overlay b/roles/obs/templates/overlay
index 1361884..0836a59 100755
--- a/roles/obs/templates/overlay
+++ b/roles/obs/templates/overlay
@@ -3,20 +3,20 @@
SLUG=$(echo "$1" | perl -ne 'if (/emacsconf-[0-9]*-(.*?)--/) { print $1; } else { print; }')
-if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png ]]; then
+if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png ]]; then
echo "Found other overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png ~/other.png
-elif [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ]]; then
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png ~/other.png
+elif [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ]]; then
echo "Found video overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ~/other.png
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ~/other.png
else
- echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png, please override ~/other.png manually"
- cp {{ emacsconf_caption_dir }}/assets/overlays/blank-other.svg.png ~/other.png
+ echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png, please override ~/other.png manually"
+ cp {{ emacsconf_caption_dir }}/assets/overlays/blank-other.png ~/other.png
fi
-if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ]]; then
+if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ]]; then
echo "Found video overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ~/video.png
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ~/video.png
else
- echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png, override ~/video.png manually"
- cp {{ emacsconf_caption_dir }}/assets/overlays/blank-video.svg.png ~/video.png
+ echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png, override ~/video.png manually"
+ cp {{ emacsconf_caption_dir }}/assets/overlays/blank-video.png ~/video.png
fi
diff --git a/roles/obs/templates/play-with-intro b/roles/obs/templates/play-with-intro
index 7f7865b..0390f8f 100755
--- a/roles/obs/templates/play-with-intro
+++ b/roles/obs/templates/play-with-intro
@@ -13,15 +13,10 @@ PREFIX=$(get-file-prefix $SLUG)
/usr/local/bin/reset-state
# Update the overlay
-overlay $SLUG
+/usr/local/bin/overlay $SLUG
# Play the intro if it exists. If it doesn't exist, switch to the intro slide and stop processing.
-if [[ -f $CACHE_DIR/$PREFIX--intro.webm ]]; then
- mpv $CACHE_DIR/$PREFIX--intro.webm
-else
- firefox --kiosk $BASE_DIR/assets/in-between/$SLUG.png
- exit 0
-fi
+/usr/local/bin/intro $SLUG
/usr/local/bin/play $SLUG
diff --git a/roles/obs/templates/set-overlay b/roles/obs/templates/set-overlay
index 0b6712b..8a408bf 100644
--- a/roles/obs/templates/set-overlay
+++ b/roles/obs/templates/set-overlay
@@ -6,20 +6,20 @@ if [[ ! -f $FILE ]]; then
fi
shift
SLUG=$(echo "$FILE" | perl -ne 'if (/^emacsconf-[0-9]*-(.*?)--/) { print $1; } else { print; }')
-if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png ]]; then
+if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png ]]; then
echo "Found other overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png ~/other.png
-elif [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ]]; then
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png ~/other.png
+elif [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ]]; then
echo "Found video overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ~/other.png
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ~/other.png
else
- echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.svg.png, please override ~/other.png manually"
- cp {{ emacsconf_caption_dir }}/assets/overlays/blank-other.svg.png ~/other.png
+ echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-other.png, please override ~/other.png manually"
+ cp {{ emacsconf_caption_dir }}/assets/overlays/blank-other.png ~/other.png
fi
-if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ]]; then
+if [[ -f {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ]]; then
echo "Found video overlay for $SLUG, copying"
- cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png ~/video.png
+ cp {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png ~/video.png
else
- echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.svg.png, override ~/video.png manually"
- cp {{ emacsconf_caption_dir }}/assets/overlays/blank-video.svg.png ~/video.png
+ echo "Could not find {{ emacsconf_caption_dir }}/assets/overlays/$SLUG-video.png, override ~/video.png manually"
+ cp {{ emacsconf_caption_dir }}/assets/overlays/blank-video.png ~/video.png
fi
diff --git a/roles/pad/tasks/main.yml b/roles/pad/tasks/main.yml
index 103ba14..b720b40 100644
--- a/roles/pad/tasks/main.yml
+++ b/roles/pad/tasks/main.yml
@@ -45,6 +45,7 @@
git:
repo: https://github.com/ether/etherpad-lite.git
dest: "{{ etherpad_path }}"
+ version: v1.9.7
depth: 1
- name: Configure etherpad
template:
diff --git a/roles/prerec/templates/Makefile b/roles/prerec/templates/Makefile
index 94aa412..709a069 100644
--- a/roles/prerec/templates/Makefile
+++ b/roles/prerec/templates/Makefile
@@ -1,16 +1,72 @@
# {{ ansible_managed }}
-PRERECS_FINAL := $(wildcard {{ emacsconf_id }}-*--final.webm)
-PRERECS_MAIN := $(patsubst %--final.webm, %--main.webm, $(PRERECS_FINAL))
+VIDEO_EXTS = mp4 mkv webm mov
+source_patterns = $(foreach ext,$(VIDEO_EXTS),$(1)--original.$(ext))
+
+PRERECS_ORIGINAL := $(wildcard emacsconf-*--original.*)
+PREFIXES := $(shell for f in $(PRERECS_ORIGINAL); do echo "$${f%--original.*}"; done)
+PRERECS_REENCODED := $(addsuffix --reencoded.webm, $(PREFIXES))
+PRERECS_OPUS := $(addsuffix --reencoded.opus, $(PREFIXES))
+PRERECS_NORMAL := $(addsuffix --normalized.opus, $(PREFIXES))
+PRERECS_MAIN := $(addsuffix --main.webm, $(PREFIXES))
+PRERECS_CAPTIONS := $(addsuffix --reencoded.vtt, $(PREFIXES))
+PRERECS_FINAL := $(wildcard emacsconf-*--final.webm)
.PHONY: all
-all: $(PRERECS_MAIN) $(PRERECS_FINAL)
-emacsconf-%--main.webm: {{ emacsconf_id }}-%--final.webm
+all: reencoded opus normal main
+
+reencoded: $(PRERECS_REENCODED)
+
+opus: $(PRERECS_OPUS)
+
+normal: $(PRERECS_NORMAL)
+
+captions: $(PRERECS_CAPTIONS)
+
+main: $(PRERECS_MAIN)
+
+emacsconf-%--reencoded.webm: SOURCES = $(call source_patterns, emacsconf-$*)
+emacsconf-%--reencoded.webm:
+ $(eval SOURCE := $(lastword $(sort $(wildcard $(SOURCES)))))
+ @if [ -z "$(SOURCE)" ]; then \
+ echo "No source file found for $@"; \
+ echo "Tried: $(SOURCES)"; \
+ exit 1; \
+ fi
+ @echo "Using source: $(SOURCE)"
+ ./reencode-in-screen.sh "$(SOURCE)"
+
+emacsconf-%--reencoded.opus: emacsconf-%--reencoded.webm
+ ffmpeg -i "$<" -c:a copy "$@"
+
+emacsconf-%--normalized.opus: emacsconf-%--reencoded.opus
+ ffmpeg-normalize "$<" -ofmt opus -c:a libopus -o "$@"
+
+emacsconf-%--main.webm: emacsconf-%--reencoded.webm emacsconf-%--normalized.opus emacsconf-%--main.vtt
+ ffmpeg -i emacsconf-$*--reencoded.webm -i emacsconf-$*--normalized.opus -i emacsconf-$*--main.vtt \
+ -map 0:v -map 1:a -c:v copy -c:a copy \
+ -map 2 -c:s webvtt -y \
+ $@
+
+emacsconf-%--main.webm: emacsconf-%--reencoded.webm
cp "$<" "$@"
-emacsconf-%--final.webm: {{ emacsconf_id }}-%--main.vtt
+emacsconf-%--final.webm: emacsconf-%--main.vtt
mux-subs.sh "$@" "$<"
+emacsconf-%--reencoded.vtt: emacsconf-%--reencoded.opus
+ whisperx --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --compute_type int8 --print_progress True --max_line_width 50 --segment_resolution chunk --max_line_count 1 --language en "$<"
+
+show-files:
+ @echo "Original $(words $(PRERECS_ORIGINAL)):"
+ @echo "$(PRERECS_ORIGINAL)"
+ @echo "Prefixes $(words $(PREFIXES)):"
+ @echo "$(PREFIXES)"
+ @echo "Reencoded $(words $(PRERECS_REENCODED)):"
+ @echo "$(PRERECS_REENCODED)"
+ @echo "Opus $(words $(PRERECS_OPUS)):"
+ @echo "$(PRERECS_OPUS)"
+
rsync:
rsync -avzue ssh {{ emacsconf_caption_dir }}/cache/ orga@media.emacsconf.org:/var/www/media.emacsconf.org/{{ emacsconf_year }}/backstage/
diff --git a/roles/publish/tasks/emacs.yml b/roles/publish/tasks/emacs.yml
index 3944876..d961878 100644
--- a/roles/publish/tasks/emacs.yml
+++ b/roles/publish/tasks/emacs.yml
@@ -8,6 +8,8 @@
- pkg-config
- libjansson-dev
- libgnutls28-dev
+ - libtiff-dev
+ - libtiff5-dev
- automake
- texinfo
state: present
diff --git a/roles/publish/tasks/main.yml b/roles/publish/tasks/main.yml
index 546a4f0..797ac7f 100644
--- a/roles/publish/tasks/main.yml
+++ b/roles/publish/tasks/main.yml
@@ -26,7 +26,7 @@
- name: Set up Emacs
become: yes
import_tasks: emacs.yml
- when: not emacs.stat.exists
+ # when: not emacs.stat.exists
- name: Configure git
template:
src: git-config
diff --git a/roles/publish/templates/emacsconf-config.el b/roles/publish/templates/emacsconf-config.el
index 05f705a..767de85 100644
--- a/roles/publish/templates/emacsconf-config.el
+++ b/roles/publish/templates/emacsconf-config.el
@@ -23,8 +23,8 @@
(setq emacsconf-upload-dir "/ssh:orga@media.emacsconf.org:/srv/upload")
{% if ansible_host == "res.emacsconf.org" %}
-(setq emacsconf-res-dir "/data/{{ emacsconf_id }}/{{ emacsconf_year}}")
-(setq emacsconf-cache-dir "/data/{{ emacsconf_id }}/cache")
+(setq emacsconf-res-dir "/data/{{ emacsconf_id }}/shared/{{ emacsconf_year}}")
+(setq emacsconf-cache-dir "/data/{{ emacsconf_id }}/shared/{{ emacsconf_year}}/cache")
(setq emacsconf-stream-host "localhost")
(setq emacsconf-stream-overlay-dir "{{ emacsconf_caption_dir }}/assets/overlays")
(setq emacsconf-stream-asset-dir "{{ emacsconf_caption_dir }}/assets")