improving the video playing including sublooping

This commit is contained in:
langolierz
2018-09-25 21:17:02 +00:00
parent 5cfbf80986
commit f1d34e8fc8
5 changed files with 29 additions and 37 deletions

View File

@@ -236,7 +236,7 @@ class Actions(object):
def change_hdmi_settings(self, setting_value):
if self.data.settings['video']['OUTPUT']['value'] == 'hdmi':
if self.data.settings['video']['HDMI_MODE']['value'] == 'preferred':
subprocess.call(['tvservice', '-p'])
subprocess.call(['tvservice', '-p'], shell=True)
elif self.data.settings['video']['HDMI_MODE']['value'] == 'CEA 4 HDMI':
subprocess.call(['tvservice -e=\"CEA 4 HDMI\"'], shell=True)
self._refresh_frame_buffer()

View File

@@ -216,7 +216,8 @@ class Display(object):
banner_list[0] = '<'
elif position > end:
banner_list[max] = '>'
elif end - start != 0:
elif end - start != 0 and position:
print('start value is {}, end value is {}, position is {}'.format(start, end, position))
marker = int(math.floor(float(position - start) /
float(end - start) * (max - 1)) + 1)
banner_list[marker] = '*'

View File

@@ -12,14 +12,18 @@ class AnalogInput(object):
self.analog_delay = 50
self.last_readings = [0,0,0,0,0,0,0,0]
SPI_PORT = 1
SPI_DEVICE = 2
self.analog_input = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
self.check_if_listening_enabled()
def check_if_listening_enabled(self):
if self.data.settings['other']['ANALOG_INPUT']['value'] == 'enabled':
if not self.analog_input:
try:
SPI_PORT = 1
SPI_DEVICE = 2
self.analog_input = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
except:
self.message_handler('INFO', 'analog inputs not connected')
self.poll_analog_inputs()
else:
self.root.after(1000, self.check_if_listening_enabled)

View File

@@ -48,22 +48,18 @@ class AltVideoPlayer:
if self.location == '':
self.status = 'EMPTY'
return True
#self.omx_player = OMXPlayer(self.location, args=arguments, dbus_name=self.name)
self.client.send_message("/player/{}/load".format(self.name[0]), self.location)
#self.player_running = True
#self.total_length = self.omx_player.duration() # <-- uneeded once self.duration stores float
if(self.end is -1):
self.end = self.total_length
if(self.start is -1):
self.start = 0
self.client.send_message("/player/{}/load".format(self.name[0]), [self.location, self.start / self.total_length, self.end / self.total_length])
self.crop_length = self.end - self.start
print('{}: the duration is {}'.format(self.name, self.total_length))
if 'show' in self.data.settings['sampler']['ON_LOAD']['value']:
#self.set_alpha_value(255)
pass
self.set_alpha_value(255)
else:
pass
#self.set_alpha_value(0)
self.set_alpha_value(0)
return True
#except (ValueError, SystemError) as e:
# print(e)
@@ -71,17 +67,17 @@ class AltVideoPlayer:
#return False
def start_video(self):
if 'show' in self.data.settings['sampler']['ON_START']['value']:
pass
#self.set_alpha_value(255)
else:
pass
#self.set_alpha_value(0)
if 'play' in self.data.settings['sampler']['ON_START']['value']:
self.status = 'PLAYING'
self.client.send_message("/player/{}/play".format(self.name[0]), True)
else:
self.status = 'START'
if 'show' in self.data.settings['sampler']['ON_START']['value']:
self.set_alpha_value(255)
else:
self.set_alpha_value(0)
def reload(self, layer):
@@ -95,13 +91,6 @@ class AltVideoPlayer:
def is_finished(self):
return self.status == 'FINISHED'
#def get_position(self):
# try:
# return self.omx_player.position()
# except:
# print('{}: error get_position'.format(self.name))
# return -1
def get_context_for_player(self):
next_context = self.data.get_next_context()
self.location = next_context['location']
@@ -113,25 +102,22 @@ class AltVideoPlayer:
def toggle_pause(self):
if self.status == "PLAYING":
self.client.send_message("/player/{}/play".format(self.name[0]), False)
self.client.send_message("/player/{}/pause".format(self.name[0]), True)
elif self.status == "PAUSED":
self.client.send_message("/player/{}/play".format(self.name[0]), True)
else:
print("error toggling pause when video is neither playing or paused")
#self.omx_player.play_pause()
#self.status = self.omx_player.playback_status().upper()
def toggle_show(self):
if self.alpha > 127:
self.show_toggle_on = False
#self.set_alpha_value(0)
self.set_alpha_value(0)
else:
self.show_toggle_on = True
#self.set_alpha_value(255)
self.set_alpha_value(255)
def set_alpha_value(self, amount):
self.client.send_message("/player/{}/alpha".format(self.name[0]), amount)
#self.omx_player.set_alpha(amount)
self.alpha = amount
def seek(self, amount):
@@ -139,7 +125,6 @@ class AltVideoPlayer:
after_seek_position = position + amount
if after_seek_position > self.start and after_seek_position < self.end:
self.set_position(after_seek_position)
#self.player.seek(amount)
else:
self.message_handler.set_message('INFO', 'can not seek outside range')
@@ -160,19 +145,18 @@ class AltVideoPlayer:
def set_position(self, position):
self.client.send_message("/player/{}/position".format(self.name[0]), position / self.total_length)
#self.omx_player.set_position(position)
def exit(self):
try:
self.client.send_message("/player/{}/quit".format(self.name[0]),True)
#self.omx_player.quit()
self.player_running = False
except:
pass
## not sure if i am going to implement this atm
def set_screen_size_for_dev_mode(self):
## only dev mode is needed now that auto handles all modes... can be removed probably ...
if self.data.settings['other']['DEV_MODE_RESET']['value'] == 'on':
##self.client.send_message("/player/{}/alpha".format(self.name[0]), amount)
return True, '--win', '50,350,550,750'
else:
aspect_mode = self.data.settings['video']['SCREEN_MODE']['value']

View File

@@ -88,7 +88,7 @@ class VideoDriver(object):
def start_video(self):
self.current_player.start_video()
self.last_player.exit()
self.exit_last_player_after_delay()
self.next_player.try_load(self.get_next_layer_value())
self.in_current_playing_cycle = True
self.wait_for_next_cycle()
@@ -132,6 +132,9 @@ class VideoDriver(object):
def reload_next_player(self):
self.next_player.reload(self.get_next_layer_value())
def exit_last_player_after_delay(self):
self.root.after(100, self.last_player.exit)
def setup_osc_client(self):
client_parser = argparse.ArgumentParser()
client_parser.add_argument("--ip", default="127.0.0.1", help="the ip")