Exemplo n.º 1
0
def musicactions():
    # if(request.method == 'GET'):
    s = request.query_string
    a = dict(item.split("=") for item in s.split("&"))
    action = a["action"]
    if (action == "stop"):
        global player
        global q
        if (q != True):
            print("QUIT")
            player.quit()
            q = True
    elif (action == "play"):
        global player
        q = False
        player = OMXPlayer("file.m4a")
        print(player)
    elif (action == "setvolume"):
        volume = float(a["volume"])
        try:
            player.unmute()
            if (volume > 50):
                player.set_volume(450 * volume / 100)
            elif (volume < 50 and volume > 0):
                player.set_volume(-100 / (volume / 100))
            elif (volume == 0):
                player.mute()
        except:  #Exception as OMXPlayerDeadError:
            print("No Player")
    return "true"
duration = 65

VIDEO_PATH = Path("~/vis_display_combined.mp4")
player = OMXPlayer(VIDEO_PATH,args=["--loop","--no-osd"])
#player.set_aspect_mode("stretch")
#player.set_video_pos(0,0,1280,800)
player.mute()
print "Started Video!\n"

try:
    while True:
        message = ser.readline().rstrip().lstrip()
        print message
	if message.startswith('START'):
            id = int(message[5])
            player.set_position(timestamps[id])
            player.unmute()
	if message.startswith('TIMEOUT'):
            player.mute()
	if message.startswith('QUIT'):
            break
except KeyboardInterrupt:
	print "Interrupted"
except Exception as exception:
	#continue and quit
	print "Exception:"
	print exception

ser.close()
player.quit()
Exemplo n.º 3
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)