blob: 709a069ef6f3c4dbadd6ebeb2bd02aadde71aa52 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# {{ ansible_managed }}
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: 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-%--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/
|