CRF=25 AB=128k RES=1280x720:10M 960x540:2.5M 640x360:500k all: define gen_target_mp4 $(basename $1).$2.mp4: $1 ffmpeg -i $1 -vcodec libx264 -s $2 -crf $(CRF) -ab $(AB) $(basename $1).$2.mp4 all: $(basename $1).$2.mp4 endef define gen_target_webm $(basename $1).$2.webm: $1 ffmpeg -i $1 -vcodec libvpx -s $2 -crf $(CRF) -vb $3 -g 250 -acodec libvorbis -ab $(AB) $(basename $1).$2.webm all: $(basename $1).$2.webm endef define gen_target_poster $(basename $1).jpg: $1 ffmpeg -ss 60 -i $1 -vframes 1 $(basename $1).jpg all: $(basename $1).jpg endef define gen_target_html all: html-$(basename $1) # Generate HTML after encoding .PHONY: html-$(basename $1) html-$(basename $1): $(foreach res,$(RES),$(basename $1).$(word 1,$(subst :, ,$(res))).mp4 $(basename $1).$(word 1,$(subst :, ,$(res))).webm) $(basename $1).jpg @echo @echo "HTML/Markdown below:" @echo @echo "" @echo @echo "## Download links" @echo @echo "* MP4:" $(foreach res,$(RES),@echo "[$(word 1,$(subst :, ,$(res)))]({static}files/videos/$(basename $1).$(word 1,$(subst :, ,$(res))).mp4)" @echo \($(shell ls -lh $(basename $1).$(word 1,$(subst :, ,$(res))).mp4 | cut -d' ' -f5)\) ) @echo "* WebM:" $(foreach res,$(RES),@echo "[$(word 1,$(subst :, ,$(res)))]({static}files/videos/$(basename $1).$(word 1,$(subst :, ,$(res))).webm)" @echo \($(shell ls -lh $(basename $1).$(word 1,$(subst :, ,$(res))).webm | cut -d' ' -f5)\) ) endef # Planekonomi_Klimatet_med_Dave_Tomas_O_-43lzPe.mp4 $(foreach src, \ ratiomatic_assembly.mp4 \ Planekonomi_Klimatet_med_Dave_Tomas_O_-43lzPe.mp4 \ ar10.mp4 \ ,$(foreach res,$(RES), \ $(eval $(call gen_target_mp4,$(src),$(word 1,$(subst :, ,$(res))))) \ $(eval $(call gen_target_webm,$(src),$(word 1,$(subst :, ,$(res))),$(word 2,$(subst :, ,$(res))))) \ ) \ $(eval $(call gen_target_poster,$(src))) \ $(eval $(call gen_target_html,$(src))) \ )