init repo
This commit is contained in:
commit
e80cd6a3dd
|
@ -0,0 +1,2 @@
|
|||
# piPlayer
|
||||
video player and motion detector for pi zero
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=run osc video player
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
User=root
|
||||
ExecStart=/usr/bin/bash /home/pi/piPlayer/runPiPlayer.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#! /usr/bin/bash
|
||||
|
||||
cd /home/pi/piPlayer
|
||||
python3 src/piPlayer.py
|
|
@ -0,0 +1,46 @@
|
|||
from pythonosc import dispatcher
|
||||
from pythonosc import osc_server
|
||||
from pythonosc import udp_client
|
||||
from playerClass import videoPlayer
|
||||
from time import sleep
|
||||
import RPi.GPIO as GPIO
|
||||
import threading
|
||||
|
||||
IP = "0.0.0.0"
|
||||
PORT = 6060
|
||||
OSC_ADDR = ""
|
||||
REMOTE_IP = "192.168.21.232"
|
||||
REMOTE_PORT = 3030
|
||||
SENSOR_PIN = 4
|
||||
OSC_SENSOR_ADDR = "/blumen/movement"
|
||||
|
||||
def readSensor():
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setup(SENSOR_PIN,GPIO.IN)
|
||||
client = udp_client.SimpleUDPClient(REMOTE_IP, REMOTE_PORT)
|
||||
pinState = GPIO.input(SENSOR_PIN)
|
||||
while True:
|
||||
pinStateNew = GPIO.input(SENSOR_PIN)
|
||||
if pinStateNew != pinState :
|
||||
client.send_message(OSC_SENSOR_ADDR,pinStateNew)
|
||||
pinState = pinStateNew
|
||||
sleep(0.2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
thread = threading.Thread(target=readSensor)
|
||||
thread.daemon = True
|
||||
thread.start()
|
||||
player = videoPlayer()
|
||||
dispatcher = dispatcher.Dispatcher()
|
||||
dispatcher.map(OSC_ADDR + "/play", player.play)
|
||||
dispatcher.map(OSC_ADDR + "/togglePause", player.togglePause)
|
||||
dispatcher.map(OSC_ADDR + "/pause", player.setPause)
|
||||
dispatcher.map(OSC_ADDR + "/stop", player.stop)
|
||||
dispatcher.map(OSC_ADDR + "/loop", player.setLoop)
|
||||
dispatcher.map(OSC_ADDR + "/setVolume", player.setVolume)
|
||||
server = osc_server.ThreadingOSCUDPServer((IP, PORT), dispatcher)
|
||||
print("Serving on {}".format(server.server_address))
|
||||
server.serve_forever()
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
import os
|
||||
import mplayer
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
|
||||
class videoPlayer:
|
||||
p = mplayer.Player()
|
||||
loop = False
|
||||
|
||||
def __init__(self):
|
||||
os.environ["SDL_VIDEODRIVER"] = "fbcon"
|
||||
os.environ["SDL_FBDEV"] = "/dev/fb1"
|
||||
|
||||
self.p = mplayer.Player(args=("-vo sdl"))
|
||||
self.p.framedropping = 1
|
||||
|
||||
def play(self, oscAddr, filePath):
|
||||
source = "".join(filePath)
|
||||
print("play", source)
|
||||
try:
|
||||
self.p.loadfile(source)
|
||||
except Exception as e:
|
||||
print("could not load video")
|
||||
print(e)
|
||||
|
||||
def togglePause(self, oscAddr=None, args=None):
|
||||
self.p.pause()
|
||||
print("togglePause")
|
||||
|
||||
def setPause(self, oscAddr, args):
|
||||
print("pause", args)
|
||||
if bool(args) != self.p.paused :
|
||||
self.p.pause()
|
||||
|
||||
def stop(self, oscAddr=None, args=None):
|
||||
self.p.pause()
|
||||
time.sleep(0.5)
|
||||
subprocess.run(["dd", "if=/dev/zero", "of=/dev/fb1"])
|
||||
|
||||
def setLoop(self, oscAddr, args):
|
||||
print("loop", args)
|
||||
self.p.loop = int(args)
|
||||
|
||||
def setVolume(self, oscAddr, args):
|
||||
print("setVolume", args)
|
||||
self.p.volume = float(args)
|
Loading…
Reference in New Issue