Be more particular about the ordering of videos.
This just hardcodes the default Doom 2 ordering of videos; this will likely need further expansion in the future.
This commit is contained in:
parent
6815545da4
commit
fb61d3d935
1 changed files with 22 additions and 11 deletions
|
@ -1,6 +1,7 @@
|
|||
import av
|
||||
import copy
|
||||
import dcc.doom_base
|
||||
import enum
|
||||
import fractions
|
||||
import io
|
||||
import logging
|
||||
|
@ -9,6 +10,11 @@ import numpy as np
|
|||
import wand.image
|
||||
|
||||
|
||||
class State(enum.Enum):
|
||||
NOT_STARTED = 1
|
||||
STARTED = 2
|
||||
DONE = 3
|
||||
|
||||
class Concat(dcc.doom_base.Wad):
|
||||
def get_parser(self, prog_name):
|
||||
parser = super().get_parser(prog_name)
|
||||
|
@ -21,10 +27,7 @@ class Concat(dcc.doom_base.Wad):
|
|||
logging.basicConfig()
|
||||
av.logging.set_level(av.logging.VERBOSE)
|
||||
av.logging.restore_default_callback()
|
||||
videos = (
|
||||
self.fabricate.joinpath(parsed_args.wad)
|
||||
.glob(f"{parsed_args.wad}_map*.mp4")
|
||||
)
|
||||
videodir = self.fabricate.joinpath(parsed_args.wad)
|
||||
fn_base = (
|
||||
f"{parsed_args.wad}_maps{parsed_args.start_map}"
|
||||
+ f"to{parsed_args.end_map}"
|
||||
|
@ -45,19 +48,27 @@ class Concat(dcc.doom_base.Wad):
|
|||
# unavailable" error when switching to inputs after the first.
|
||||
# Presumably fixable, but it's easier to just make one graph per video
|
||||
# and mux everything together at the end.
|
||||
for v in sorted(videos):
|
||||
# TODO: Support UDoom in literally any way.
|
||||
if not (
|
||||
v.name >= f"{parsed_args.wad}_map{parsed_args.start_map}.mp4"
|
||||
and v.name <= f"{parsed_args.wad}_map{parsed_args.end_map}.mp4"
|
||||
):
|
||||
d2maps = [str(x).zfill(2) for x in range(1,16)] + ["31","32"] + [str(x) for x in range(16,31)]
|
||||
state = State.NOT_STARTED
|
||||
for idx in d2maps:
|
||||
if idx == parsed_args.start_map:
|
||||
state = State.STARTED
|
||||
if idx == parsed_args.end_map:
|
||||
state = State.DONE
|
||||
if state == State.NOT_STARTED:
|
||||
continue
|
||||
start_time = self._offset / 1000000
|
||||
text = self._add_chunk(v, output, not parsed_args.nooverlay)
|
||||
text = self._add_chunk(
|
||||
videodir.joinpath(f"{parsed_args.wad}_map{idx}.mp4"),
|
||||
output, not parsed_args.nooverlay
|
||||
)
|
||||
list.append(
|
||||
summary, f"{text} {math.floor(start_time / 60):02}:"
|
||||
+ f"{math.floor(start_time % 60):02}"
|
||||
)
|
||||
if state == State.DONE:
|
||||
break
|
||||
output.close()
|
||||
|
||||
for line in summary:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue