Makefile (1760B)
1 INPUT_VIDEO = <please select a video file as INPUT_VIDEO> 2 3 SHELL = bash 4 # We need Bash's process substitution operator >() 5 # because we want to convert the files back to a 6 # cooked format, because raw takes a serious amount 7 # of space. It is of course also possible to use 8 # FIFO:s (if you know what you are doing). 9 10 DRAFT = -d 11 # Useful for better performance when not working 12 # with colours or not caring about colours. 13 14 FFMPEG_ARGS = -c:v libx264 -preset veryslow -crf 0 -pix_fmt yuv444p 15 # ↑~~~~~~~~~~~ ↑~~~~~~~~~~~~~~~ ↑~~~~~~~~~~~~~~~~~~~~~~ 16 # │ │ │ 17 # │ │ └──── Lossless 18 # │ │ 19 # │ └──── High compression 20 # │ 21 # └──── H.264, a lossless-capable codec 22 23 FRAME_1 = 10 24 FRAME_2 = 20 25 FRAME_3 = 30 26 FRAME_4 = 40 27 FRAME_5 = end 28 29 1.mkv 2.mkv 3.mkv 4.mkv 5.mkv: $(INPUT_VIDEO) 30 framerate=$$(ffprobe -v quiet -show_streams -select_streams v - < "$(INPUT_VIDEO)" | \ 31 grep '^r_frame_rate=' | cut -d = -f 2) && \ 32 ../../blind-from-video -L $(DRAFT) "$(INPUT_VIDEO)" - | \ 33 ../../blind-split -L >(../../blind-to-video $(DRAFT) $${framerate} $(FFMPEG_ARGS) 1.mkv) $(FRAME_1) \ 34 >(../../blind-to-video $(DRAFT) $${framerate} $(FFMPEG_ARGS) 2.mkv) $(FRAME_2) \ 35 >(../../blind-to-video $(DRAFT) $${framerate} $(FFMPEG_ARGS) 3.mkv) $(FRAME_3) \ 36 >(../../blind-to-video $(DRAFT) $${framerate} $(FFMPEG_ARGS) 4.mkv) $(FRAME_4) \ 37 >(../../blind-to-video $(DRAFT) $${framerate} $(FFMPEG_ARGS) 5.mkv) $(FRAME_5) 38 39 clean: 40 -rm 1.mkv 2.mkv 3.mkv 4.mkv 5.mkv 41 42 .PHONY: clean