added video post-processing

This commit is contained in:
jpunkt 2022-01-25 20:21:45 +01:00
parent 578c25d7bc
commit 60019662b4
2 changed files with 35 additions and 12 deletions

View file

@ -1,5 +1,7 @@
import imp
import logging import logging
import os.path import os.path
import subprocess
from enum import Enum, auto from enum import Enum, auto
@ -67,10 +69,11 @@ class Statemachine:
State.PLAY: self._play, State.PLAY: self._play,
State.POST_PROCESS: self._post_process, State.POST_PROCESS: self._post_process,
State.REWIND: self._rewind, State.REWIND: self._rewind,
State.IDLE_END: self._idle_end State.IDLE_END: self._idle_end,
State.SHUTDOWN: self._shutdown
} }
while (self.state is not State.ERROR) and (self.state is not State.SHUTDOWN): while (self.state is not State.SHUTDOWN) and (self.state is not State.ERROR):
logger.debug(f'Run(state={self.state})') logger.debug(f'Run(state={self.state})')
try: try:
choice[self.state]() choice[self.state]()
@ -169,10 +172,16 @@ class Statemachine:
""" """
Post-processing Post-processing
""" """
# TODO postprocessing - add sound logger.debug('Converting video...')
# logger.debug('Converting video...')
# cmdstring = f'MP4Box -add {fs_names.REC_DRAW_CITY} {fs_names.REC_MERGED_VIDEO}' for fname in self.story.videos:
# call([cmdstring], shell=True) fnew = fname.split('.')[0] + '.mov'
logger.debug(f'Converting {fname} to {fnew}')
cmd = ['MP4Box', '-add', fname, fnew]
subprocess.run(cmd)
cmddel = ['rm', fname]
subprocess.run(cmddel)
self.hal.flush_serial() self.hal.flush_serial()
self._next_state() self._next_state()
@ -190,12 +199,15 @@ class Statemachine:
Initialize shutdown or go back to POST if `self.loop=True` Initialize shutdown or go back to POST if `self.loop=True`
""" """
reset(self.hal) reset(self.hal)
logger.debug('Turning off HELO1...')
self.hal.helo1 = False self.hal.helo1 = False
logger.debug(f'statemachine.loop={self.loop}')
if self.loop: if self.loop:
self.state = State.POST self.state = State.POST
else: else:
self._next_state() logger.debug('Setting state to shutdown')
self.state = State.SHUTDOWN
def _shutdown(self): def _shutdown(self):
""" """
@ -203,4 +215,5 @@ class Statemachine:
""" """
del self.hal del self.hal
del self.story del self.story
self.state = None

View file

@ -66,10 +66,10 @@ class Activity(Enum):
RECORD_VIDEO = {'duration': 60.0, RECORD_VIDEO = {'duration': 60.0,
'filename': ''} 'filename': ''}
TAKE_PHOTO = {'filename': ''} TAKE_PHOTO = {'filename': ''}
ADVANCE_UP = {'steps': 48, ADVANCE_UP = {'steps': 47,
'scroll': Scrolls.VERTICAL, 'scroll': Scrolls.VERTICAL,
'speed': 3} 'speed': 3}
ADVANCE_LEFT = {'steps': 92, ADVANCE_LEFT = {'steps': 96,
'scroll': Scrolls.HORIZONTAL, 'scroll': Scrolls.HORIZONTAL,
'speed': 3} 'speed': 3}
LIGHT_FRONT = {'r': 0, LIGHT_FRONT = {'r': 0,
@ -202,7 +202,7 @@ def _get_sound(language: Language, **kwargs):
class Storyboard: class Storyboard:
def __init__(self, *story: List[Do]) -> None: def __init__(self, *story: List[Chapter]) -> None:
self.story = story self.story = story
self.hal = None self.hal = None
@ -217,6 +217,8 @@ class Storyboard:
self._lang = Language.NOT_SET self._lang = Language.NOT_SET
self.videos = []
self.ACTIVITY_SELECTOR = None self.ACTIVITY_SELECTOR = None
@property @property
@ -360,6 +362,11 @@ class Storyboard:
if do_now: if do_now:
do_it(hal) do_it(hal)
def _record_video(hal, filename=None, **kwargs):
logger.debug(f'Storyboard._record_video(filename={filename}, {kwargs})')
record_video(hal, filename=filename, **kwargs)
self.videos.append(str(filename))
def _goto(hal, index:int, **kwargs): def _goto(hal, index:int, **kwargs):
""" """
Set the next chapter Set the next chapter
@ -373,7 +380,7 @@ class Storyboard:
Activity.PARALLEL: _parallel, Activity.PARALLEL: _parallel,
Activity.GOTO: _goto, Activity.GOTO: _goto,
Activity.RECORD_SOUND: record_sound, Activity.RECORD_SOUND: record_sound,
Activity.RECORD_VIDEO: record_video, Activity.RECORD_VIDEO: _record_video,
Activity.TAKE_PHOTO: take_photo, Activity.TAKE_PHOTO: take_photo,
Activity.LIGHT_FRONT: _light, Activity.LIGHT_FRONT: _light,
Activity.LIGHT_BACK: _light, Activity.LIGHT_BACK: _light,
@ -399,7 +406,10 @@ class Storyboard:
if not self._chapter_set: if not self._chapter_set:
self._chapter_set = True self._chapter_set = True
self._next_chapter = self._index + 1 if self._index < (len(self.story) - 1):
self._next_chapter = self._index + 1
else:
self._next_chapter = None
else: else:
self._next_chapter = None self._next_chapter = None