// ranges: ranges in seconds sS ffmpeg_makeSpliceFilter(L ranges) { new LS out; int i = 0; fOr (DoubleRange r : ranges) { int lbl = ++i; S start = formatDouble(r.start, 2); out.add("[0:v]trim=start=" + start + ":end=" + end + ",setpts=PTS-STARTPTS[v" + lbl + "]"); out.add("[0:a]trim=start=" + start + ":end=" + end + ",asetpts=PTS-STARTPTS[a" + lbl + "]"); } out.add(joinMap(iota(lbl), i -> "[v" + i + "]") + "concat[outv]"); out.add(joinMap(iota(lbl), i -> "[a" + i + "]") + "concat=v=0:a=1[outa]"); ret joinWithSemicolon(out); }