media_dir = /srv/media music_dir = $(media_dir)/music flac = $(wildcard $(music_dir)/*/*.flac) mp3 := $(subst flac,mp3,$(flac)) img_dir = $(media_dir)/pictures src_dir = $(img_dir)/src thumb_dir = $(img_dir)/thumb www_dir = $(img_dir)/www img = $(wildcard $(src_dir)/*.jpeg) img_thumb := $(subst $(src_dir), $(thumb_dir), $(subst jpeg,webp, $(img))) img_www := $(subst $(src_dir), $(www_dir), $(subst jpeg,webp, $(img))) video_dir = /srv/media/videos video_webm = $(wildcard $(video_dir)/*/*.webm) video_mp4 := $(subst webm,mp4, $(video_webm)) video_webp := $(subst webm,webp, $(video_webm)) video_png := $(subst webm,png, $(video_webm)) climbing_dir = /srv/media/climbing climbing_webm = $(wildcard $(climbing_dir)/*.webm) climbing_mp4 := $(subst webm,mp4, $(climbing_webm)) climbing_webp := $(subst webm,webp, $(climbing_webm)) all: music pictures videos climbing music: $(mp3) pictures: $(img_www) $(img_thumb) videos: $(video_mp4) $(video_webp) climbing: $(climbing_mp4) $(climbing_webp) %.mp3: %.flac ffmpeg -i $< -y -vsync 0 -ab 256k -map_metadata 0 -id3v2_version 3 $@ %.webp: %.webm ffmpeg -i $< -hide_banner -loglevel error -vf thumbnail -frames:v 1 -c:v png -f image2pipe - | convert - $@ $(www_dir)/%.webp: $(src_dir)/%.jpeg convert $< -resize 1536x1024 -quality 85 $@ $(thumb_dir)/%.webp: $(src_dir)/%.jpeg convert $< -resize 150x100 -quality 85 $@ %.mp4: %.webm ffmpeg -i $< -vf scale=1280:-2 -c:v h264 -c:a aac -b:a 128k -strict -2 -movflags faststart $@