Exemplo n.º 1
0
def play_film(filename="demo.mp4", duration=0, position=0):
    debug("\nfilename:", filename)
    debug("  position:", position)
    debug("  duration:", duration)
    trim_from_end = 0.5
    #trim_from_end = 0
    player = OMXPlayer(filename)
    player.set_position(0.0)
    debug("  pre-play pos:", player.position())
    player.play()
    # check and set position
    full_length = player.duration()
    # if the position is imposible, set it to 0
    if position <= 0 or position > full_length:
        position = 0.0
    player.set_position(position)
    # check and set duration
    length_to_end = player.duration()
    # if duration is imposible, set it to the length_to_end
    if duration == 0 or duration > length_to_end:
        wait = length_to_end - trim_from_end
    else:
        wait = duration
    if wait < 0:
        wait = 0
    debug("  full length: ", full_length)
    debug("  length to end: ", length_to_end)
    debug("  wait: ", wait)
    sleep(wait)
    debug("  post sleep pos:", player.position())
    player.pause()
    player.quit()
    debug("  post pause pos:", player.position())
    return True
Exemplo n.º 2
0
def play_film(filename="demo.mp4", duration=0, position=0):
    debug("\nfilename:", filename)
    debug("  position:", position)
    debug("  duration:", duration)
    trim_from_end = 0.5
    #trim_from_end = 0
    player = OMXPlayer(filename)
    player.set_position(0.0)
    debug("  pre-play pos:", player.position())
    player.play()
    # check and set position
    full_length = player.duration()
    # if the position is imposible, set it to 0
    if position <= 0 or position > full_length:
        position = 0.0
    player.set_position(position)
    # check and set duration
    length_to_end = player.duration()
    # if duration is imposible, set it to the length_to_end
    if duration == 0 or duration > length_to_end:
        wait = length_to_end - trim_from_end
    else:
        wait = duration
    if wait < 0:
        wait = 0
    debug("  full length: ", full_length)
    debug("  length to end: ", length_to_end)
    debug("  wait: ", wait)
    sleep(wait)
    debug("  post sleep pos:", player.position())
    player.pause()
    player.quit()
    debug("  post pause pos:", player.position())
    return True
Exemplo n.º 3
0
    def run(self, filename):
        global omxplayer

        gpio_control = GPIOControl()
        return_code = 0  # OK

        try:
            omxplayer = OMXPlayer(filename, OMXPLAYER_ARGS, None, None, True)
            omxplayer.pause()

            print 'Video player is armed!'
            print 'Video duration = ' + str(omxplayer.duration())

            #while(gpio_control.motion_detected()):
            #	continue;

            gpio_control.start()

            #loop_num = int(omxplayer.duration() / duration_sect)

            i = duration_sect
            last_sect = False

            while True:
                status = 0

                while status != 1:
                    pos = omxplayer.position()
                    #print str(pos)
                    if pos + 0.01 >= i:
                        if last_sect:
                            omxplayer.set_position(0)
                            last_sect = False
                            i = 0
                        status = 1
                    continue
                if gpio_control.motion_detected() == 0:
                    gpio_control.turn_off_relay()
                    omxplayer.pause()

                i += duration_sect
                if i + duration_sect >= omxplayer.duration():
                    last_sect = True

        except IOError as e:
            return_code = -1

        except KeyboardInterrupt:
            print 'KeyboardInterrupt'
            omxplayer.quit()

        print('EXIT')
        GPIO.cleanup()
        return return_code
Exemplo n.º 4
0
def single_video_player_looper(video_clip_path, sleep_minutes, test_mode):
    """
    Loops a single video.

    Arguments
        video_clip_path     string
                            The path of the video clip being played.

        sleep_minutes       integer or float
                            Length of time to pause between loops.

        test_mode           boolean
                            True of False. If test_mode is True, clip is not
                            played in full screen mode.
    """

    test_mode_length = "720"
    test_mode_width = "360"
    play_message = "{} - Playing {}".format(current_time(), video_clip_path)
    if test_mode is True:
        player = OMXPlayer(video_clip_path,
                           args=[
                               "--no-osd", "--loop", "--win",
                               "0, 0, {0}, {1}".format(test_mode_length,
                                                       test_mode_width)
                           ])
        play_message = "{} in test mode".format(play_message)
    else:
        player = OMXPlayer(video_clip_path,
                           args=[
                               "--no-osd", "--loop", "--orientation", "180",
                               "--aspect-mode", "fill"
                           ])

    print(play_message)
    print("{} - {} minute(s) pause between each play".format(
        current_time(), sleep_minutes))

    try:
        player.pause()

        while True:
            print(play_message)
            player.play()
            sleep(player.duration())
            player.pause()
            player.set_position(0.0)
            if sleep_minutes > 0:
                if sleep_minutes < 1:
                    sleep_message = "{} seconds".format(
                        int(60.0 * sleep_minutes))
                else:
                    sleep_message = "{} minute(s)".format(sleep_minutes)
                print("{} - Sleeping {} before starting again".format(
                    current_time(), sleep_message))
                sleep(60 * sleep_minutes)
    except KeyboardInterrupt:
        print("{} - Exiting".format(current_time()))
        player.quit()
        sys.exit()
Exemplo n.º 5
0
def play_it(file):
    try:
        path = Path(file)
        player = OMXPlayer(path)
        sleep(player.duration())
        player.quit()
        sleep(1)
    except:
        print('oops all berries')
        sleep(1)
Exemplo n.º 6
0
def playMedia(path="../tests/media/test_media_1.mp4", duration=0, position=0):
    player = OMXPlayer(path, args=["--no-osd"])
    player.set_aspect_mode("fill")
    if position > 0:
            player.set_position(position)
    #player.duration() # this only works if this line is here
    if duration == 0:
            duration = player.duration() - position
    player.play()
    time.sleep(duration)
    player.quit()
Exemplo n.º 7
0
def playMedia(path="../tests/media/test_media_1.mp4", duration=0, position=0):
    player = OMXPlayer(path, args=["--no-osd"])
    player.set_aspect_mode("fill")
    if position > 0:
        player.set_position(position)
    #player.duration() # this only works if this line is here
    if duration == 0:
        duration = player.duration() - position
    player.play()
    time.sleep(duration)
    player.quit()
Exemplo n.º 8
0
def start_video_player(
):  # Starte OMX Videoplayer der am unteren Bildschirmrand angezeigt wird
    # TODO global variablen checken, file_list muss ziemlich sicher nicht global sein,
    #  video_player wahrscheinlich auch nicht, first_time_video_played wird gar nicht benutzt
    global file_list, video_player, index_video, first_time_video_played
    print("Laenge von Filelist: {}".format(len(file_list)))
    t = threading.currentThread()
    index_video = 0
    while getattr(t, "running", True):
        if len(file_list) > 0:
            print("File exists: {}".format(
                os.path.exists(file_list[index_video])))
            if os.path.exists(file_list[index_video]):
                filey = file_list[index_video]
                print("VIDEO Playing {}".format(filey), flush=True)
                t = threading.Event()
                index_video = index_video + 1
                if index_video > len(file_list) - 1:
                    index_video = 0
                try:
                    video_player_playing = video_player.is_playing()
                except:
                    video_player_playing = False

                if not video_player_playing:
                    video_player = OMXPlayer(
                        filey,
                        args=[
                            '--orientation', '270', '--win',
                            '1312,0,1920,1080', '--no-osd', '--vol',
                            '-10000000'
                        ],
                        dbus_name='org.mpris.MeidlaPlayer2.omxplayer1')

                else:
                    video_player.load(filey)

                try:
                    duration_of_video = video_player.duration() + 3
                except:
                    duration_of_video = 3
                    print("duration of video failed", flush=True)

                print(duration_of_video, flush=True)
                video_player.mute()
                if max_people_reached():
                    video_player.hide_video()
                video_player.play_sync()
                sleep(3)
                # sleep(duration_of_video)
            else:
                break
        else:
            break
Exemplo n.º 9
0
 def _get_length_for_file(self, path):
     try:
         temp_player = OMXPlayer(path,
                                 args=['--alpha', '0'],
                                 dbus_name='t.t')
         duration = temp_player.duration()
         temp_player.quit()
         return duration
     except Exception as e:
         print(e)
         self.message_handler.set_message('INFO', 'cannot load video')
         return None
Exemplo n.º 10
0
def play_music():

    #Randomly select mp3 file
    time.sleep(0.5)
    print('Playing Music...')

    randomfile = random.choice(os.listdir('/home/pi/Music/'))
    file = '/home/pi/Music/' + randomfile

    music_player = OMXPlayer(file, args='-o local -b --vol -1850')

    time.sleep(music_player.duration())
Exemplo n.º 11
0
def start_video_player():
    global file_list, video_player, index_video, first_time_video_played
    print("Laenge von Filelist: {}".format(len(file_list)))
    t = threading.currentThread()
    index_video = 0
    while getattr(t, "running", True):
        if len(file_list) > 0:
            print("File exists: {}".format(
                os.path.exists(file_list[index_video])))
            if os.path.exists(file_list[index_video]):
                filey = file_list[index_video]
                print("VIDEO Playing {}".format(filey), flush=True)
                t = threading.Event()
                index_video = index_video + 1
                if index_video > len(file_list) - 1:
                    index_video = 0

                try:
                    video_player_playing = video_player.is_playing()
                except:
                    video_player_playing = False
                print(video_player_playing)
                if not video_player_playing:
                    video_player = OMXPlayer(
                        filey,
                        args=[
                            '--orientation', '270', '--win',
                            '1312,0,1920,1080', '--no-osd', '--vol',
                            '-10000000'
                        ],
                        dbus_name='org.mpris.MeidlaPlayer2.omxplayer1')

                else:
                    video_player.load(filey)

                try:
                    duration_of_video = video_player.duration() + 3
                except:
                    duration_of_video = 3
                    print("duration of video failed", flush=True)

                print(duration_of_video, flush=True)
                video_player.mute()
                if max_people_reached():
                    video_player.hide_video()
                video_player.play_sync()
                sleep(3)
                #sleep(duration_of_video)
            else:
                break
        else:
            break
Exemplo n.º 12
0
class Player:
    def __init__(self, url):
        self.url = url
        self.player = None
        self.state = True
        self.playlist = False
        self._play = True

    def start(self):
        if isinstance(self.url, string_types):
            cmd = 'youtube-dl -g -f best {0}'.format(self.url)
            yt_dl = subprocess.Popen(cmd,
                                     shell=True,
                                     stdin=subprocess.PIPE,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE)
            (url, err) = yt_dl.communicate()
            if yt_dl.returncode != 0:
                sys.stderr.write(err)
                print('error')
            yurl = url.decode('UTF-8').strip()
            self.player = OMXPlayer(yurl, args=['-o', 'hdmi'])
            return self.player.duration()

    def stop(self):
        self.player.stop()
        self._play = False
        self.player = None
        return False

    def skip(self):
        if self.playlist == True:
            self.player.stop()
            return True
        else:
            self.player.stop()
            return False

    def toggle(self):
        #false = not playing // true = playing
        if self.state == True:
            self.state = False
            self.player.pause()
        elif self.state == False:
            self.state = True
            self.player.play()
        else:
            return False

    def is_play(self):
        return self.player.can_control()
Exemplo n.º 13
0
  def run(self):
    omxplayer = OMXPlayer(Path("./video/Slàinte.mp4"))
    time_remaining = omxplayer.duration()
    omxplayer_sleep = 1 # one second sleep sessions below for video to run in loop
    omxplayer.play()
    while self.running:
        time_remaining = time_remaining - omxplayer_sleep
        if time_remaining > 0:
            sleep(omxplayer_sleep)
        print('Can Control = '+str(omxplayer.can_control())) 
        # If can_control() = True, pressing Kivy Stop button will make self.running = False and allow
        # me to take control of this loop and terminate the thread.

    omxplayer.quit()
Exemplo n.º 14
0
class Player(object):
    def __init__(self, media_dir):
        self.media_dir = media_dir
        self.player = None
        self.subtitles = True

    def play(self, filename):
        if self.player:
            self.player.quit()
            self.player = None
        video_path = Path(self.media_dir + filename)
        self.player = OMXPlayer(video_path, args=['--no-osd'])

    def quit(self):
        self.player.quit()
        self.player = None

    def pause(self):
        self.player.play_pause()

    def seek(self, val):
        self.player.set_position(val)

    def set_volume(self, val):
        self.player.set_volume(val)

    def toggle_subtitles(self):
        if self.subtitles:
            self.player.hide_subtitles()
        else:
            self.player.show_subtitles()
        self.subtitles = not self.subtitles

    def set_subtitle_track(self, val):
        self.player.select_subtitle(val)

    @property
    def status(self):
        if self.player != None:
            return {
                'time': int(self.player.position()),
                'length': int(self.player.duration()),
                'volume': int(self.player.volume()),
                'subtitle_tracks': self.player.list_subtitles()
            }
        return {'time': 0, 'length': 0, 'volume': 0, 'subtitle_tracks': []}
class videoPlayer:
    def __init__(self, videoPath):
        self.videoPath = videoPath
        self.classPlayer = OMXPlayer(self.videoPath)
        sleep(0.2)
        self.classPlayer.pause()

    def playVideo(self):
        self.classPlayer.play()

    def end(self):
        return self.classPlayer.is_playing()

    def length(self):
        return self.classPlayer.duration()

    def freeze(self):
        self.classPlayer.quit()
Exemplo n.º 16
0
	def __init__(self):
		#loading settings from setup.config
		settings = sl_settings.Settings()
		if not settings.load():
			error(1)

		ip_setup = dynamic_ip()
		ip_setup.set(settings.get("ip_address"))
	
		plr = OMXPlayer(settings.get("file_name"),["--blank","--no-osd"])

		if settings.get("ismaster") == "True":
			if ip_setup.waitForConnections(settings.get("num_clients")):
				ip_setup.sendStartSignal()
		else:
			ip_setup.connectToServer()
			ip_setup.waitForStartSignal()
			print "this function is not ready yet"
			### TODO: error check 
		#loop_time = plr.duration() - float(settings.get("load_time"))
		plr.play()
	
		while True:
			try:
				if settings.get("ismaster") == "False":
					ip_setup.waitForStartSignal()
					plr.set_position(0)
				elif settings.get("ismaster") == "True":
					sleep(plr.duration() - 1.0)
					#sleep(6)
					ip_setup.sendStartSignal()
					plr.set_position(0)
			except KeyboardInterrupt:
				print "interrupted!"
				ip_setup.closeConnection()
				ip_setup.setOldIp()
				plr.stop()
				plr.quit()
				break
		#plr.stop()

		ip_setup.setOldIp()
Exemplo n.º 17
0
def video_loop(master):
    video_count = 0
    width = master.winfo_screenwidth()
    height = master.winfo_screenheight()
    while True:

        VIDEO_PATH = Path(my_videos[video_count])

        player = OMXPlayer(VIDEO_PATH)

        player.set_video_pos(width * 0.162, height * 0.147, width * 0.674,
                             height * 0.833)

        player.set_aspect_mode('fill')

        sleep(player.duration())

        player.quit()

        video_count = video_count + 1 if video_count < len(
            my_videos) - 1 else 0
Exemplo n.º 18
0
      # check if chapter button is pressed
      if VIDEO_STARTED == True and player:
        chapter = read_buttons()
        # ~ if not GPIO.input(GPIO_LANG):
          # ~ time.sleep(1)
          # ~ switch_language()
        if chapter > 0:
          if VIDEO_PAUSED == True:
            if player:
              player.play()
              VIDEO_PAUSED = False
            print("--- PLAY ---")
            time.sleep(.3)
          handle_chapter(chapter)
        if player.duration() - player.position() < 2 and not VIDEO_PAUSED:
          VIDEO_PAUSED = True
          player.pause()
          # return to italian language
          AUDIO_NAME = AUDIO_NAME.replace('_eng', '')
          play_audio_command = 'aplay ' + AUDIO_NAME
          print('...pausing video')

      # check if is closed
      if GPIO.input(GPIO_PIN):
        sendUDP(b'0') # closed
        VIDEO_STARTED = False
        # return to italian language
        AUDIO_NAME = AUDIO_NAME.replace('_eng', '')
        play_audio_command = 'aplay ' + AUDIO_NAME
        print("Stopping video...")
Exemplo n.º 19
0
class VideoPlayer:
    def __init__(self, root, message_handler, data, name):
        self.root = root
        self.message_handler = message_handler
        self.data = data
        self.omx_player = None
        self.name = name
        self.omx_running = False
        self.status = 'EMPTY'
        self.total_length = 0.0
        self.bankslot_number = '*-*'
        self.start = -1.0
        self.end = -1.0
        self.rate = 1
        self.crop_length = 0.0
        self.location = ''
        self.load_attempts = 0
        self.alpha = 0

    def try_load(self, layer):
        load_attempts = 0
        while (load_attempts < 2):
            load_attempts = load_attempts + 1
            if self.load(layer):
                print('load success')
                return True
            else:
                print('load failed')
        self.message_handler.set_message('ERROR', 'failed to load')
        self.status = 'ERROR'
        return False

    def load(self, layer):
        #try:
        self.get_context_for_player()
        is_dev_mode, first_screen_arg, second_screen_arg = self.set_screen_size_for_dev_mode(
        )
        arguments = [
            '--no-osd', '--layer',
            str(layer), '--adev', 'local', '--alpha', '0', first_screen_arg,
            second_screen_arg
        ]
        if not is_dev_mode:
            arguments.append('--blank=0x{}'.format(
                self.data.get_background_colour()))
        self.status = 'LOADING'
        print('the location is {}'.format(self.location))
        if self.location == '':
            self.status = 'EMPTY'
            return True
        self.omx_player = OMXPlayer(self.location,
                                    args=arguments,
                                    dbus_name=self.name)
        self.omx_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.crop_length = self.end - self.start
        print('{}: the duration is {}'.format(self.name, self.total_length))
        if self.start > 0.9:
            self.set_position(self.start - 0.9)
        if 'show' in self.data.settings['sampler']['ON_LOAD']['value']:
            self.set_alpha_value(255)
        else:
            self.set_alpha_value(0)
        self.pause_at_start()
        return True
        #except (ValueError, SystemError) as e:
        #  print(e)
        #self.message_handler.set_message('ERROR', 'load attempt fail')
        #return False

    def pause_at_start(self):
        position = self.get_position()
        start_threshold = round(self.start - 0.02, 2)
        if position > start_threshold:
            if self.status == 'LOADING':
                self.status = 'LOADED'
                self.omx_player.pause()
        elif self.omx_running:
            self.root.after(5, self.pause_at_start)

    def start_video(self):
        if 'show' in self.data.settings['sampler']['ON_START']['value']:
            self.set_alpha_value(255)
        else:
            self.set_alpha_value(0)
        if 'play' in self.data.settings['sampler']['ON_START']['value']:
            self.status = 'PLAYING'
            self.omx_player.play()
        else:
            self.status = 'START'
        self.pause_at_end()

    def pause_at_end(self):
        position = self.get_position()
        end_threshold = self.end - 0.2
        if (position > end_threshold):
            self.status = 'FINISHED'
            self.omx_player.pause()

            print('its paused at end!')
        elif (self.omx_running):
            self.root.after(5, self.pause_at_end)

    def reload(self, layer):
        self.exit()
        self.omx_running = False
        self.try_load(layer)

    def is_loaded(self):
        return self.status is 'LOADED'

    def is_finished(self):
        return self.status is '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']
        #self.total_length = next_context['length']
        self.start = next_context['start']
        self.end = next_context['end']
        self.bankslot_number = next_context['bankslot_number']
        self.rate = next_context['rate']

    def toggle_pause(self):
        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)
        else:
            self.show_toggle_on = True
            self.set_alpha_value(255)

    def set_alpha_value(self, amount):
        self.omx_player.set_alpha(amount)
        self.alpha = amount

    def seek(self, amount):
        position = self.get_position()
        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')

    def change_rate(self, amount):
        new_rate = self.rate + amount
        if (new_rate > self.omx_player.minimum_rate()
                and new_rate < self.omx_player.maximum_rate()):
            updated_speed = self.omx_player.set_rate(new_rate)
            self.rate = new_rate
            print('max rate {} , min rate {} '.format(
                self.omx_player.maximum_rate(),
                self.omx_player.minimum_rate()))
            return new_rate
        else:
            self.message_handler.set_message(
                'INFO', 'can not set speed outside of range')
            return self.rate

    def set_position(self, position):
        self.omx_player.set_position(position)

    def exit(self):
        try:
            self.omx_player.quit()
            self.status = 'EMPTY'
            self.omx_running = False
        except:
            pass

    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':
            return True, '--win', '50,350,550,750'
        else:
            aspect_mode = self.data.settings['video']['SCREEN_MODE']['value']
            return False, '--aspect-mode', aspect_mode
Exemplo n.º 20
0
        time.sleep(0.00001)                      
        GPIO.output(TRIG, False)                 

        while GPIO.input(ECHO)==0:
            pulse_start = time.time()

        while GPIO.input(ECHO)==1:
            pulse_end = time.time()

        pulse_duration = pulse_end - pulse_start 

        distance = pulse_duration * 17150        
        distance = round(distance, 2)    

        #Check whether the distance is within range
        if distance > 2 and distance < distSensado:
            #print ("Distancia:",distance - 0.5,"cm")
            print("Accion numero {}".format(tgr),"- Distancia:",distance - 0.5,"cm")
            player.play()
            time.sleep(player.duration())
            tgr = tgr + 1
        else:
            print ("Usuario fuera de rango")

        player.set_position(0.0)

except KeyboardInterrupt:
    player.quit()
    GPIO.cleanup()
    time.sleep(3)
    sys.exit()
Exemplo n.º 21
0
# retreive any altitude sensor
sensor = YAltitude.FirstAltitude()
if sensor is None:
    die('No module connected')
m = sensor.get_module()
target = m.get_serialNumber()

altSensor = YAltitude.FindAltitude(target + '.altitude')

#Length of the video in seconds 

#init video in omx
VIDEO_PATH = Path("../../Videos/UPP_NER_2.mp4")
player = OMXPlayer(VIDEO_PATH, args=['--no-osd'])

FULL_TIME = Decimal(player.duration())
HALF_TIME = FULL_TIME / Decimal(2)

#how long we should wait between checking the sensor value
interval = 1

#how many seconds of video we should leave
margin = 10

#get playback rate from arguments
rate = float(sys.argv[1])

starting_pos = int(sys.argv[2])
play_time = int(sys.argv[3])

print('rate', rate)
Exemplo n.º 22
0
class ScreenController:
    video_playlist = []
    player1 = None
    player2 = None
    index = None
    number_of_cycles = 0
    currentIndex = None
    nextIndex = None
    layer = 10
    baseUrl = "http://10.0.0.111:8080/video/"
    fadeTime = 2
    fadeStep = 5
    lowerAlpha = 50
    upperAlpha = 250

    def __init__(self):
        self.index = 0
        self.currentIndex = 0
        self.nextIndex = self.currentIndex + 1
        self.player_log = logging.getLogger("Player")

    def setup_player_one(self):
        self.player1 = OMXPlayer(self.baseUrl +
                                 self.video_playlist[self.currentIndex],
                                 args='--win 0,0,1920,1080 --layer 2',
                                 dbus_name='orb.mpris.MediaPlayer2.omxplayer1',
                                 pause=True)
        self.player1.playEvent += lambda _: self.player_log.info(" 1 Play")
        self.player1.pauseEvent += lambda _: self.player_log.info("1 Pause")
        self.player1.stopEvent += lambda _: self.player_log.info("1 Stop")

    def setup_player_two(self):
        self.player2 = OMXPlayer(self.baseUrl +
                                 self.video_playlist[self.nextIndex],
                                 args='--win 0,0,1920,1080 --layer 1',
                                 dbus_name='orb.mpris.MediaPlayer2.omxplayer2',
                                 pause=True)
        self.player2.playEvent += lambda _: self.player_log.info(" 2 Play")
        self.player2.pauseEvent += lambda _: self.player_log.info("2 Pause")
        self.player2.stopEvent += lambda _: self.player_log.info("2 Stop")

    def start_playlist(self, videos):
        self.layer = len(videos) + 1
        videos.sort(reverse=False, key=self.sort_videos)
        for x in videos:
            self.video_playlist.append(x['id'])

        self.setup_player_one()
        self.setup_player_two()
        self.play_videos(True)

    def start_stream(self, stream_id):
        videos = json.load(open('videos.json', 'r'))
        video = next((item for item in videos if item["id"] == stream_id),
                     None)
        url = video.uri
        self.player1 = OMXPlayer(url,
                                 args='--win 0,0,1920,1080',
                                 dbus_name='orb.mpris.MediaPlayer2.omxplayer1')

    def stop_stream(self):
        self.player1.quit()

    def play_single_video(self, video_id):
        # videos = json.load(open('videos.json', 'r'))
        # video = next((item for item in videos if item["id"] == video_id), None)
        url = self.baseUrl + video_id
        # check if player is already playing
        # if it is playing then fade out player 1
        # start player 2 with new video fading in
        # quit player 1
        # do the same for player 2
        if self.player1 == None:
            self.player1 = OMXPlayer(
                url,
                args='--win 0,0,1920,1080 --layer 2',
                dbus_name='orb.mpris.MediaPlayer2.omxplayer1')
            self.player2 = None
        else:
            self.player2 = OMXPlayer(
                url,
                args='--win 0,0,1920,1080 --layer 1',
                dbus_name='orb.mpris.MediaPlayer2.omxplayer2')
            self.player1 = None

    def play_videos(self, init=False):
        # Load players with appropiate indexes
        if init == False:
            self.player1.load(self.baseUrl +
                              self.video_playlist[self.currentIndex],
                              pause=True)
            self.player2.load(self.baseUrl +
                              self.video_playlist[self.nextIndex],
                              pause=True)

    #	else:
    #	self.player1.set_alpha(255)
    #	self.player2.set_alpha(255)

    # Play video on player one
        self.player1.play()
        print("first video started")
        #self.fade_player_in(self.player1)

        # Sleep for video duration - 2 * self.fadeTime seconds because there are two following fades which sleep for fadeTime seconds each
        sleep(self.player1.duration() - (2 * self.fadeTime))
        self.player2.play()
        print("second video started")
        #  Start fading player one out and player two in for fadeTime seconds each
        self.fade_player_out(self.player1)
        self.fade_player_in(self.player2)

        # Stop Video One
        print("first video quit start")
        self.player1.quit()
        print("first video quit finished")

        # Play for total duration - 1 second
        sleep(self.player2.duration() - self.fadeTime)

        # Fade player
        #	self.fade_player_out(self.player2)
        self.player2.quit()

        # Set new current and next index
        self.reset_indexes()

        # Recursively call play videos
        self.number_of_cycles = self.number_of_cycles + 1
        if (self.number_of_cycles < 3):
            #if(self.layer > 1):
            #self.layer = self.layer - 2
            self.play_videos(False)

    def reset_indexes(self):
        if self.nextIndex + 1 >= len(self.video_playlist):
            self.currentIndex = 0
        else:
            self.currentIndex = self.nextIndex + 1

        if self.currentIndex + 1 >= len(self.video_playlist):
            self.nextIndex = 0
        else:
            self.nextIndex = self.currentIndex + 1

        print('----AFTER CURRENT----')
        print(self.currentIndex)
        print('----AFTER NEXT----')
        print(self.nextIndex)

    def fade_player_out(self, player):
        print('----fade_player_out START----')
        alpha = self.upperAlpha
        no_of_steps = (self.upperAlpha - self.lowerAlpha) / self.fadeTime
        fadeSleep = self.fadeTime / no_of_steps
        for x in range(no_of_steps):
            sleep(fadeSleep)
            alpha = alpha - ((self.upperAlpha - self.lowerAlpha) / no_of_steps)
            player.set_alpha(alpha)
        print('----fade_player_out END----')

    def fade_player_in(self, player):
        alpha = self.lowerAlpha
        no_of_steps = (self.upperAlpha - self.lowerAlpha) / self.fadeTime
        fadeSleep = self.fadeTime / no_of_steps
        for x in range(no_of_steps):
            sleep(fadeSleep)
            alpha = alpha + ((self.upperAlpha - self.lowerAlpha) / no_of_steps)
            player.set_alpha(alpha)

    def get_remaining_seconds(self, player):
        remaining_seconds = player.duration() - player.position()
        return remaining_seconds

    def sort_videos(self, video):
        return video['order']

    def is_nearly_finished(self, player):
        amountPlayed = 0
        if player.position() > 0:
            amountPlayed = player.position()
        percentPlayed = amountPlayed / player.duration()
        print(percentPlayed)
        if (percentPlayed > 0.9):
            return True
        else:
            return False
Exemplo n.º 23
0
class VideoPlayer(object):
    def __init__(self):
        self.player = None
        self.logger = LogObject('Video Player')
        self.args = ['-b']

        self.STATUS_MAP = {
            'volume': self._videoVolume,
            'length': self._videoLength,
            'playback': self._playbackStatus,
            'position': self._videoPosition
        }

        self.CONTROL_MAP = {
            'playpause': self._playPause,
            'stop': self._stop,
            'mute': self._mute,
            'unmute': self._unmute,
            'play': self._play,
            'pause': self._pause
        }

        self.SEEK_MAP = {'relative': self._seek, 'absolute': self._setPosition}

    def playUrl(self, url):

        if not self.player:
            self.player = OMXPlayer(url, args=self.args)
        else:
            self.player.load(url)

    def setVolume(self, volume):
        self._checkPlayerExist()
        try:
            self.player.set_volume(volume)
            return self.logger.writeAndReturnLog('VOL0003', {'volume': volume})
        except (AttributeError, OMXPlayerDeadError):
            self._raisePlayerError('VOL0004')

    def sendCommand(self, command):
        self._checkPlayerExist()
        try:
            return self.CONTROL_MAP[command]()
        except (AttributeError, OMXPlayerDeadError):
            self._raisePlayerError('CTRL0003')

    def _stop(self):
        self.player.quit()
        return self.logger.writeAndReturnLog('CTRL0004')

    def _mute(self):
        self.player.mute()
        return self.logger.writeAndReturnLog('CTRL0006')

    def _unmute(self):
        self.player.unmute()
        return self.logger.writeAndReturnLog('CTRL0007')

    def _playPause(self):
        self.player.play_pause()
        return self.logger.writeAndReturnLog('CTRL0005')

    def _play(self):
        self.player.play()
        return self.logger.writeAndReturnLog('CTRL0008')

    def _pause(self):
        self.player.pause()
        return self.logger.writeAndReturnLog('CTRL0009')

    def seek(self, option, time):
        self._checkPlayerExist()
        try:
            return self.SEEK_MAP[option](time)
        except (AttributeError, OMXPlayerDeadError):
            self._raisePlayerError('SEEK0007')

    def _seek(self, seekTime):
        self.player.seek(seekTime)
        return self.logger.writeAndReturnLog('SEEK0005',
                                             {'position': seekTime})

    def _setPosition(self, position):
        if position > self._videoLength() or position < 0:
            self._raisePlayerError('SEEK0004', {'position': position})
        self.player.set_position(position)
        return self.logger.writeAndReturnLog('SEEK0006',
                                             {'position': position})

    def _checkPlayerExist(self):
        if not self.player:
            self._raisePlayerError('CTRL0003')

    def videoStatus(self, status):
        if not self.player:
            self._raisePlayerError('STAT0003')
        try:
            return self.STATUS_MAP[status]()
        except (AttributeError, OMXPlayerDeadError):
            self._raisePlayerError('STAT0003')

    def _videoPosition(self):
        return self.player.position()

    def _videoLength(self):
        return self.player.duration()

    def _videoVolume(self):
        return self.player.volume()

    def _playbackStatus(self):
        return self.player.playback_status()

    def _raisePlayerError(self, logReference, variablesDict={}):
        returnMsg = self.logger.writeAndReturnLog(logReference, variablesDict)
        raise PlayerError(returnMsg)
Exemplo n.º 24
0
class VideoPlayer:
    def __init__(self,
                 VIDEO_NAME,
                 IMAGE_WIDTH,
                 IMAGE_HEIGHT,
                 USING_VLC=False,
                 audioPlayerRef=None,
                 pygameRef=None):

        self.USING_VLC = USING_VLC
        self.VIDEO_FILE = VIDEO_NAME
        #get a reference to the audio player
        self.audioPlayerRef = audioPlayerRef

        self.player = None

        if self.USING_VLC:
            if (pygameRef == None):
                print(
                    "VIDEOPLAYER ERROR: don't have a reference to pygame window!"
                )

            self.vlcInstance = vlc.Instance()
            #tmp (remove comment here) self.media = self.vlcInstance.media_new('/home/pi/code/' + self.VIDEO_FILE)
            self.media = self.vlcInstance.media_new(self.VIDEO_FILE)

            # Create new instance of vlc player
            self.player = self.vlcInstance.media_player_new()
            self.player.stop()

            # Pass pygame window id to vlc player, so it can render its contents there.
            win_id = pygameRef.display.get_wm_info()['window']
            self.player.set_xwindow(win_id)
            self.player.set_media(self.media)

            # TODO: correct the line below
            mouse.move(IMAGE_WIDTH, IMAGE_HEIGHT, True, 0)
        else:
            self.omx_stdin = None
            self.omx_process = None
            self.tot_sec = None

        self.STARTED = False
        self.PAUSED = False
        if (self.USING_VLC):
            print("VIDEOPLAYER: using VLC")
        else:
            print("VIDEOPLAYER: using OMX")

        # info about video
        self.info_video = {}
        self.chapters = self.get_chapters()
        self.curr_chapter = 0
        print('VIDEOPLAYER: info video \n\t# chapter:{}\n\t{}'.format(
            len(self.chapters), self.chapters))

    def start(self):
        print("VIDEOPLAYER: Starting video...")
        self.STARTED = True
        self.PAUSED = False

        if self.USING_VLC:
            self.player.play()
        else:
            if self.player:
                self.player.quit()
                self.player = None
            self.player = OMXPlayer(self.VIDEO_FILE, args=['--no-osd'])
        time.sleep(1)

    def stop(self):
        print("VIDEOPLAYER: Stopping video...")
        self.STARTED = False
        #TODO: is it necessary
        #self.PAUSED = True
        if self.USING_VLC:
            self.player.stop()
        else:
            self.player.quit()
            self.player = None

    def pause(self):
        print("VIDEOPLAYER: Pausing video...")
        # TODO: add some code here??
        #self.PAUSED = True #??

    def needUpdate(self):
        return (self.STARTED and self.player)

    def update(self):
        #print("VIDEOPLAYER: update")
        if self.USING_VLC:
            if self.player.get_length() - self.player.get_time(
            ) < 2000 and not self.PAUSED:
                print("VIDEOPLAYER VLC: a due secondi dalla fine")
                self.PAUSED = True
                self.player.set_pause(1)
        else:
            if self.player.duration() - self.player.position(
            ) < 2 and not self.PAUSED:
                print('VIDEOPLAYER OMX: a due secondi dalla fine')
                self.PAUSED = True
                self.player.pause()
        #self.printStatus()

    def printStatus(self):
        print("VIDEOPLAYER: started {}, paused {}".format(
            self.STARTED, self.PAUSED))

    def changeChapter(self, chapter):
        print("VIDEOPLAYER: change chapter")
        if chapter != 0:
            print("VIDEOPLAYER: chapter != 0")
            # in origin era così riga commentata)
            #if self.PAUSED == True:
            #if self.PAUSED == False:
            #print("VIDEOPLAYER: paused is true")
            if self.USING_VLC:
                self.player.set_pause(0)
            else:
                if self.player:
                    self.player.play()
            self.PAUSED = False

            if self.USING_VLC:
                self.handle_chapter_vlc(chapter)
            else:
                self.handle_chapter_omx(chapter)
        """
		if self.USING_VLC:
			if  self.player.get_length() - self.player.get_time() < 2000 and not self.PAUSED:
				self.PAUSED = True
				self.player.set_pause(1)
		else:
			if  self.player.duration() - self.player.position() < 2 and not self.PAUSED:
				print('...pausing video')
				self.PAUSED = True
				self.player.pause()
				
		"""
        """
		#not using language right now
		# return to italian language
		if self.audioPlayerRef:
			self.audioPlayerRef.switchToITA()
		"""

    def isPlaying(self):
        return self.STARTED

    def switch_language(self):
        print("Video: switch language...")
        if self.audioPlayerRef:
            self.audioPlayerRef.switchLanguage()
        if self.player:
            self.player.set_position(0)

    # get all chapters of video file
    def get_chapters(self):
        buff = sp.check_output([
            "ffmpeg", "-i", self.VIDEO_FILE, "-f", 'ffmetadata', "file.txt",
            '-y'
        ],
                               stderr=sp.STDOUT,
                               universal_newlines=True)
        #print(buff)
        self.chapters = []
        self.chapters_info = {}
        names = []
        i = 0
        for line in iter(buff.splitlines()):
            m = re.match(
                r".*Chapter #(\d+:\d+): start (\d+\.\d+), end (\d+\.\d+).*",
                line)
            if m != None and m.group(1) not in names:
                names.append(m.group(1))
                self.chapters.append({
                    "name": i + 1,
                    "start": float(m.group(2)),
                    "end": float(m.group(3))
                })
                i = i + 1
        if len(self.chapters) == 2:
            self.chapters[len(self.chapters) - 1]['name'] = 3
        return self.chapters

    # check where i am:
    # 0: before chapter 1
    # 1: chapter 1
    # 2: chapter 2
    # 3: chapter 3
    # 10 last chapter
    def pos2chapter(self, pos):
        # ~ print('actual position', pos)
        for x in self.chapters:
            if pos >= x['start'] / 1000 and pos <= x['end']:
                return x['name']
        if pos < self.chapters[0]['start']:
            return 0
        if pos > self.chapters[len(self.chapters) - 1]['end']:
            return self.chapters[len(self.chapters) - 1]['name']

    # vlc chapter manager
    def handle_chapter_vlc(self, c):
        print('VIDEOPLAYER VLC: going to', len(self.chapters), c)
        if len(self.chapters) == 2:
            if c == 3:
                print(1)
                self.player.set_chapter(1)
            if c == 1:
                print(2)
                self.player.set_chapter(0)
        else:
            self.player.set_chapter(c - 1)
        self.audioPlayerRef.stop()
        if c == 1:
            self.audioPlayerRef.start()
        self.curr_chapter = c

    # chapter manager
    def handle_chapter_omx(self, c):
        self.curr_chapter = self.pos2chapter(self.player.position())
        print('VIDEOPLAYER OMX: Handle chapter: from', self.curr_chapter, 'to',
              c)
        # ~ if c != curr_chapter and c in [f['name'] for f in chapters]:
        if c in [f['name'] for f in self.chapters]:
            cpt = self.chapters[[
                y for y, x in enumerate(self.chapters) if x['name'] == c
            ][0]]
            time.sleep(1)
            print('going to', cpt['start'])
            self.player.set_position(cpt['start'])
            time.sleep(1)
            self.audioPlayerRef.stop()
            if c == 1:
                self.audioPlayerRef.start()
            self.curr_chapter = c

    def kill(self):
        print("Kill video...")
        if self.USING_VLC:
            self.player.stop()
        else:
            self.player.quit()
            self.player = None
Exemplo n.º 25
0
class VideoPlayerScreen(Screen):
    slider = ObjectProperty()
    minimized = BooleanProperty(False)

    @staticmethod
    def clearbckgrnd():
        Window.clearcolor = (0, 0, 0, 0)

    @staticmethod
    def addbckgrnd():
        Window.clearcolor = (0, 0, 0, 1)

    def play(self):
        VIDEO_PATH = Path("../videos/20200308tagesthemen.mp4")

        self.player = OMXPlayer(VIDEO_PATH,
                                args=['-o', 'alsa', '--layer', '10000'])
        #self.player = OMXPlayer('/home/pi/Documents/Radio/videos/20200223tagesthemen.mp4')
        self.player.set_video_pos(0, 0, 800, 480)
        #self.player.hide_video()
        #self.player.show_video()
        self.player.set_alpha(100)
        self.set_slider()
        #Clock.schedule_once(self.quit, 20)
        Clock.schedule_interval(self.set_slider, 3)

    def playpause(self):
        self.player.play_pause()

    def quit(self, gg, **kwargs):
        self.player.quit()
        App.get_running_app().stop()

    def set_slider(self, *args):
        pos = self.player.position()  # in seconds as int
        duration = self.player.duration()  # in seconds as float
        #return pos/duration
        self.slider.value_normalized = pos / duration
        #return 0.5

    def set_videopos(self, *args):
        pos = self.player.position()  # in seconds as int
        duration = self.player.duration()  # in seconds as float
        if abs(pos / duration - self.slider.value_normalized) > 0.05:
            self.player.set_position(self.slider.value_normalized * duration)

    def change_size(self):
        # pass
        #width 800
        #height 480

        # check if crop as alternative

        if self.minimized:
            # self.player.set_video_pos(2,2,798,478)
            self.player.set_alpha(255)
        else:
            # self.player.set_video_pos(2,2,798,418)
            self.player.set_alpha(100)

        self.minimized = not self.minimized
Exemplo n.º 26
0
    VideoFile(2, "/media/pi/TOSHIBA1/ledtime.mp4")
]
player_log = logging.getLogger("Player")

player1 = OMXPlayer(video_playlist[0].path,
                    args='--win 0,0,1920,1080 --layer 2',
                    bus_address_finder=None,
                    Connection=None,
                    dbus_name='orb.mpris.MediaPlayer2.omxplayer1',
                    pause=True)
player1.set_alpha(200)

player2 = OMXPlayer(video_playlist[1].path,
                    args='--win 0,0,1920,1080 --layer 1',
                    bus_address_finder=None,
                    Connection=None,
                    dbus_name='orb.mpris.MediaPlayer2.omxplayer2',
                    pause=True)

player1.play()
sleep(player1.duration() - 1)
alpha1 = 200

player2.pause()
for x in range(6):
    sleep(0.1)
    alpha1 = alpha1 - 20
    player1.set_alpha(alpha1)

player2.play()
Exemplo n.º 27
0
def play_it(file):
    path = Path(file)
    player = OMXPlayer(path)
    sleep(player.duration())
    player.quit()
Exemplo n.º 28
0
class Omx:
    def __init__(self, media_folder):
        self.player = None
        self.media_folder = media_folder
        self.expects_loading_exit = False
        self.looping = False

    def play(self, filename, loop=False):
        if self.player:
            self.expects_loading_exit = True
            self.player.load(filename)
        else:
            args = ['-b', '--no-osd', '-o', 'both']

            if loop:
                args += ['--loop']
                self.looping = True
            else:
                self.looping = False

            try:
                self.player = OMXPlayer(filename, args=args)
            except SystemError as e:
                print(e)

            self.player.stopEvent += self.on_player_stop
            self.player.exitEvent += self.on_player_exit

    def on_player_stop(self, player):
        self.player = None

    def on_player_exit(self, player, exit_status):
        if self.expects_loading_exit:
            self.expects_loading_exit = False
        else:
            self.player = None

    def stop(self):
        if not self.player:
            return

        self.player.stop()
        self.player = None

    def pause(self):
        if not self.player:
            return

        self.player.play_pause()

    def seek_fraction(self, fraction):
        if not self.player:
            return

        duration = self.player.duration()
        self.player.set_position(fraction * duration)

    def set_volume(self, volume):
        if not self.player:
            return

        if volume > 10:
            volume = 10
        elif volume < 0:
            volume = 0

        self.player.set_volume(volume)

    def get_source(self):
        """ Get player source and remove media folder """
        source = self.player.get_source()
        if source.startswith(self.media_folder + "/"):
            return source[len(self.media_folder) + 1:]
        else:
            return source

    def status(self):
        if not self.player:
            return {
                'status': 'stopped',
                'source': None,
            }

        return {
            'status': self.player.playback_status(),
            'source': self.get_source(),
            'position': self.player.position(),
            'duration': self.player.duration(),
            'volume': self.player.volume(),
            'looping': self.looping,
        }
Exemplo n.º 29
0
from pathlib import Path
import time
from PIL import Image
import os
import pygame

os.system('xset dpms force off')
time.sleep(5)
VIDEO_PATH = Path("2.mp4")

player = OMXPlayer(VIDEO_PATH)
player.can_set_fullscreen()

pos = player.position()
print(pos)
time_end = player.duration()
print(time_end)
time.sleep(time_end)

player.quit()

#os.system('xset dpms force off')

#os.system('xset dpms force off')

time.sleep(5)
VIDEO_PATH = Path("1.mp4")

player = OMXPlayer(VIDEO_PATH)

pos = player.position()
Exemplo n.º 30
0

# Main
###

# Démarre la lecture de la vidéo
player = OMXPlayer(
    video,
    args=['--no-osd', '-o', 'local', '--loop', '--align', 'center'],
    dbus_name='org.mpris.MediaPlayer2.omxplayer',
    pause=True)

# Capture les signaux pour arrêter proprement le programme
signal.signal(signal.SIGINT, signal_handler)  # Singal INT (^c)
signal.signal(signal.SIGTERM, signal_handler)  # Signal TERM (kill)

# Boucle principale pour voir si la lecture est terminée.
intro_lock = False
led_blink = True
while True:
    led_blink_handler(gpio_led, led_blink)
    if int(player.position()) == int(player.duration()):
        player.pause()
        player.set_position(0.0)
        player.play()
        time.sleep(0.5)
        player.pause()
        led_blink = True
        intro_lock = False
    time.sleep(0.1)
Exemplo n.º 31
0
class VideoPlayer:
    def __init__(self):
        self.process = None
        self.cmd = ""
        self.args = ""
        self.path = ""
        self.player = None

    def composeCommand(self):
        # split the command and use
        # the 'glob' module to expand the * wildchar
        #self.cmd = 'omxplayer --loop --no-osd --win "0 0 {} {}" --crop {},{},{},{} {}'.format(SCREENW, SCREENH, CROPX1, CROPY1, CROPX2, CROPY2, videoFileLocation)
        self.cmd = 'omxplayer --no-osd'
        self.args = shlex.split(self.cmd)
        self.args = self.args[:-1] + glob.glob(self.args[-1])

    def loadVideo(self, path):
        self.path = path
        print(self.path)
        #~ self.cmd = 'omxplayer --no-osd {}'.format(videoName)
        #~ self.args = shlex.split( self.cmd )
        #~ self.args = self.args[:-1] + glob.glob( self.args[-1] )

        #~ # Open omxplayer
        #~ try:
        #~ print( " load the video " )
        #~ self.process = Popen( self.args, stdin=PIPE, stdout=PIPE )
        #~ print("This is the omxplayer process id: ",  self.process.pid )

        #~ except:
        #~ print("something went wrong")
        #~ quit()

    def play(self):
        #~ print("play")
        if self.player is None:
            self.player = OMXPlayer(self.path,
                                    args=['--no-osd', '--adev', 'local'])
        #~ self.player.play()
        #~ self.process.stdin.write(b'i')
        #~ self.process.stdin.flush()

    def stop(self):
        #~ print("stop")
        if self.player is not None:
            self.player.quit()
            self.player = None

    def pause(self):
        #~ print("pause")
        self.player.pause()
        #self.process.stdin.write(b'p')
        #self.process.stdin.flush()

    def kill(self):
        # quit omxplayer
        self.player.stop()
        #~ self.process.stdin.write(b'q')
        #~ self.process.stdin.flush()
        #~ self.process.stdin.close()

    def is_ended(self):
        if self.player is not None:
            #~ print(self.player.position())
            # ~ if self.player.position() > 10 or self.player.duration() - self.player.position() < 0.2:
            if self.player.duration() - self.player.position() < 1:
                return True
            else:
                return False

    def next(self, videoName):
        self.stop()
        self.loadVideo(videoName)
        self.play()
Exemplo n.º 32
0
class VideoPlayerScreen(Screen):
    slider = ObjectProperty()
    minimized = BooleanProperty(True)
    video_path = StringProperty()  # 20200308tagesthemen.mp4

    def is_playing(self):
        if hasattr(self, 'player'):
            try:
                return self.player.is_playing()
            except OMXPlayerDeadError:
                self.leave_player()
                return False
        else:
            return False

    def set_play_pause_bttn(self, *args):
        print(self.ids)
        if self.is_playing():
            self.ids.play_pause_image.source = 'atlas://data/images/defaulttheme/media-playback-pause'
        else:
            self.ids.play_pause_image.source = 'atlas://data/images/defaulttheme/media-playback-start'

    def play(self):
        VIDEO_PATH = Path("videos/" + self.video_path)
        print(VIDEO_PATH)
        self.player = OMXPlayer(VIDEO_PATH,
                                args=['-o', 'alsa', '--layer', '100000'])
        self.player.set_video_pos(0, 0, 800, 480)
        self.set_slider()
        self.change_size()
        Clock.schedule_interval(self.set_slider, 3)
        Clock.schedule_interval(self.set_play_pause_bttn, 1)

    def player_stop(self):
        Clock.unschedule(self.set_play_pause_bttn)
        Clock.unschedule(self.set_slider)
        if self.is_playing():
            self.player.stop()

    @staticmethod
    def leave_player():
        App.get_running_app().root.current = 'base'

    def play_pause(self):
        self.player.play_pause()

    def quit(self, gg, **kwargs):
        self.player.quit()
        App.get_running_app().stop()

    def set_slider(self, *args):
        try:
            pos = self.player.position()  # in seconds as int
            duration = self.player.duration()  # in seconds as float
            self.slider.value_normalized = pos / duration
        except OMXPlayerDeadError:
            self.leave_player()

    def set_videopos(self, *args):
        pos = self.player.position()  # in seconds as int
        duration = self.player.duration()  # in seconds as float
        if abs(pos / duration - self.slider.value_normalized) > 0.05:
            self.player.set_position(self.slider.value_normalized * duration)

    def change_size(self):

        if self.minimized:
            self.player.set_alpha(255)
        else:
            self.player.set_alpha(100)
        self.minimized = not self.minimized
Exemplo n.º 33
0
def play_it(file):
    path = Path(file)
    player = OMXPlayer(path)
    #player.set_aspect_mode("stretch")
    sleep(player.duration())