keepfear Danke werde ich so umsetzen.
Beiträge von Muesliriegel
-
-
Lieber BlackJack,
danke für deinen Beitrag, ja es ist nicht ganz sauber programmiert, aber primär hat es funktioniert.
Das war nur nicht mein eigentliches Problem, die Audioausgabe über die Soundkarte hat nicht funktioniert.
Was ich hier vergessen habe zu erwähnen, war, dass ich die Aufnahme, sowie die das Abspielen, über Buttons steuere.
Das war dann auch der Kern des Problems, ich hatte die Pin Belegung der Soundkarte nicht beachtet.
https://www.hifiberry.com/docs/hardware/…fiberry-boards/
Nach der Änderung der Pins, läuft alles problemlos.
Danke auf jedenfalls für die Anregungen, wir haben das Script nochmals umgebaut.
Python
Alles anzeigen#!/usr/bin/env python3 import time import sys import os import subprocess from gpiozero import Button from signal import pause import datetime import psutil #Start Record with key number 1 button1 = Button(24) #Stop Record with key # button2 = Button(27) #Stop Record with hang up button3 = Button(17) #telephone announcement audio1 = ('/media/share/Output/05_Europa.mp3') print ('PhoneRecorderScriptIsStarted') def recorder(): kill_processes() date = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") print ('Start to record') p = subprocess.Popen('/usr/bin/arecord -f S32_LE -r 44100 -c 2 /media/share/Output/'+date +'.wav', stdout=subprocess.PIPE, shell=True) def player(): kill_processes() print ('play welcome audio') subprocess.Popen('mplayer '+audio1 +'', shell=True) def kill(proc_pid): process = psutil.Process(proc_pid) for proc in process.children(recursive=True): proc.kill() process.kill() try: kill_processes() except: print("except") def kill_processes(): devnull = open('/dev/null', 'w') subprocess.Popen('killall mplayer', stdout=devnull, shell=True) subprocess.Popen('killall arecord', stdout=devnull, shell=True) def stoprec(): kill_processes() print ('Stop with Record') button1.when_pressed = recorder button2.when_pressed = stoprec button3.when_pressed = stoprec button3.when_released = player pause()
-
Liebe Leute,
ich hab auf meinem Rasperry4 eine HifiBerry DAC+ ADC laufen und möchte damit aufnehmen und abspielen.
Das funktioniert soweit auch gut direkt über die shell. Also auch jeder Player aplay, omxplayer, mplayer.
Nur möchte ich das ganze im einem python script starten, spielt er zwar das audiofile ab, aber es nichts zu hören.
Nach beenden des scripts, funktionieren auch alle anderen player nicht mehr, sie spielen zwar alle aber kein Ton mehr.
Erst nach einem reboot kann ich über die shell audiofiles wieder hören.
Es scheint so als würde ein prozess das audio blockiern.
Könnte mir jemand helfen?
Python
Alles anzeigen#!/usr/bin/env python3 import time import sys import os import subprocess from gpiozero import Button from signal import pause #Start Record with key number 1 button1 = Button(16) #Stop Record with key # button2 = Button(12) #Stop Record with hang up button3 = Button(21) #telephone announcement audio1 = ('/media/share/Output/05_Europa.mp3') print ('PhoneRecorderScriptIsStarted') def recorder(): subprocess.call(['killall', 'omxplayer.bin']) print ('Start to record') subprocess.Popen('arecord -f S32_LE -r 44100 -c 2 /media/share/Output/$(date "+%Y-%m-%d_%H-%M-%s.wav")',shell=True) print ('Stop to record') def player(): #subprocess.call(['killall', 'omxplayer.bin']) #subprocess.Popen('omxplayer -o alsa $audio1', shell=True) #subprocess.Popen(['omxplayer', '-o', 'alsa', audio1, '&']) subprocess.Popen('aplay rec2.wav', shell=True) print ('play welcome audio') def stoprec(): subprocess.call('killall arecord', shell=True) subprocess.call(['killall', 'omxplayer.bin']) print ('Stop with Record') button1.when_pressed = recorder button2.when_pressed = stoprec button3.when_pressed = stoprec button3.when_released = player pause()
-
Lieber Hyle, ich hab mich noch nicht bedankt für deine Hilfe.
Ich hätte das Projekt, ohne die hilfe nicht rechtzeitig fertig bekommen.
DANKE -
Sorry, das reinkopieren des codes hatte nicht funktioniert.
Der Code hat bisher gut funktioniert auch wenn im Shebang nur python steht und läuft 24/7.
Mittlerweile habe ich 6 Stk Zero`s auf Rasperry 3 getauscht, diese funktionieren mit der selben SD-Card einwandfrei.
2 Fragen hätte ich noch:
- Kann es sein das die zeros einen Hardware Fehler haben, oder wenn ich einen Fehler des Kernel geschrieben bekomme, der Kernel ein Problem hat?
- Kann ich verhindern das man den Code am Screen nicht sieht wenn der Button gedrückt wird?
LG PatrickPython
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess from gpiozero import Button from signal import pause button1 = Button(17) movie1 = ('/home/pi/video/12.mp4') print ('wait 5sec') time.sleep(5) def player1(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) button1.when_pressed = player1 subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) pause()
-
Zero W 1.1
FCC ID: 2ABCB-RPIOW
IC: 20953-RPIOWANATEL: 04906-17-10629
Baujahr 2017Sandisk Ultra 32GB HC1 10 A1
Netzteil ist ein Orginal Raspberry- TT Electronics, 5,1V 2,5A
OS damals von der Raspberry.org - "2018-11-13-raspbian-stretch-lite" runtergeladen, jetzt gibts es ja das neue Buster - Linux 10
Bei dem "sudo apt-get update"
Nach einem neustart hat es tatsächlich funktioniert und das
"sudo apt-get upgrade" ebenfalls.
installiert ist:
mc
python3-gpiozero
omxplayer
Das script für das videoloop:
Bei Betätigung eines Button soll das Video von Neu starten, ansonsten immer im loopSyntaxEditor Code Snippet
Python
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess from gpiozero import Button from signal import pause button1 = Button(17) movie1 = ('/home/pi/video/.mp4') print ('wait 5sec') time.sleep(5) def player1(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) button1.when_pressed = player1 subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) pause()
Brauchst du noch andere Infos? -
Das passiert mir wenn ich ein einfaches update mache!
Kernel problem...
Ich hoffe ihr könnt mir dabei weiterhelfen.
Liebe Grüße -
Liebe Leute,
Ich hab ein merkwürdiges problem, ich hab 15 Zeros gekauft und sie alle mit dem selben fertig eingerichteten Image bespielt.
Auf dem Image ist raspbian-stretch-lite installiert (Mem-split 256), sowie python 3 und omxplayer. Es läuft dann ein einziges video im loop (die Videos haben zwischen 1,5 bis 1,7 GB und laufen mit 16 bits)Jetzt ist es so, bei 9 läuft alles wunderbar, also 24/7 und die anderen brechen einfach nach einer weile ab und einer startet das video überhaupt nicht.
Sind die Raspberrys möglicherweiße fehlerhaft? fehler im code?
Das ist das script für das loop:SyntaxEditor Code Snippet
Python
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess from gpiozero import Button from signal import pause button1 = Button(17) movie1 = ('/home/pi/video/.mp4') print ('wait 5sec') time.sleep(5) def player1(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) button1.when_pressed = player1 subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop', movie1, '&']) pause()
-
zeile 47 kann ich mir jetzt auch sparen...
subprocess.call(['killall', 'omxplayer.bin'])
-
Danke, so läufst jetzt mit autoplay.
Python
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess from gpiozero import Button button1 = Button(17) button2 = Button(27) button3 = Button(22) button4 = Button(10) movie1 = ('/home/pi/video/PA_P4_1.mp4') movie2 = ('/home/pi/video/PA_P4_2.mp4') movie3 = ('/home/pi/video/PA_P4_3.mp4') movie4 = ('/home/pi/video/PA_P4_4.mp4') print ('wait 5sec') time.sleep(5) def player1(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie1]) def player2(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie2]) def player3(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie3]) def player4(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie4]) button1.when_pressed = player1 button2.when_pressed = player2 button3.when_pressed = player3 button4.when_pressed = player4 subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie1]) pause()
-
Vielen Dank für die vielen denkanstöße, ich hab jetzt ein wenig umgebaut und alles auf gpiozero umgestellt und es läuft jetzt absulut sauber.
jetzt brauch ich nur noch eine lösung das irgendein Video automatisch gestartet wird und man das gestartet video mit den anderen buttons unterbrechen kann.Python
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess from gpiozero import Button button1 = Button(17) button2 = Button(27) button3 = Button(22) button4 = Button(10) movie1 = ('/home/pi/video/PA_P4_1.mp4') movie2 = ('/home/pi/video/PA_P4_2.mp4') movie3 = ('/home/pi/video/PA_P4_3.mp4') movie4 = ('/home/pi/video/PA_P4_4.mp4') player = False print ('wait 5sec') time.sleep(5) def player1(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie1]) player = True def player2(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie2]) player = True def player3(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie3]) player = True def player4(): subprocess.call(['killall', 'omxplayer.bin']) os.system('clear') subprocess.Popen(['omxplayer', '-b', '--loop' ,movie4]) player = True button1.when_pressed = player1 button2.when_pressed = player2 button3.when_pressed = player3 button4.when_pressed = player4
-
Soweit hab ich es jetzt geändert, ich post mal den kompletten code
funktioniert leider nicht, so wie ich es mir gedacht hab, hab wohl einen groben denk fehler produziert...
LgCode
Alles anzeigen#!/usr/bin/env python import time import sys import os import subprocess import pigpio button1 =(17) button2 =(27) button3 =(22) button4 =(10) movie1 = ('/home/pi/video/HA_W5-6_1.mp4') movie2 = ('/home/pi/video/HA_W5-6_2.mp4') movie3 = ('/home/pi/video/HA_W5-6_3.mp4') movie4 = ('/home/pi/video/HA_W5-6_4.mp4') pi = pigpio.pi() pi.set_mode(button1, pigpio.OUTPUT) pi.write(button1,1) pi.set_pull_up_down(button1, pigpio.PUD_UP) pi.set_mode(button2, pigpio.OUTPUT) pi.write(button2,1) pi.set_pull_up_down(button2, pigpio.PUD_DOWN) pi.set_mode(button3, pigpio.OUTPUT) pi.write(button3,1) pi.set_pull_up_down(button3, pigpio.PUD_DOWN) pi.set_mode(button4, pigpio.OUTPUT) pi.write(button4,1) pi.set_pull_up_down(button4, pigpio.PUD_DOWN) #last_state1 = True #last_state2 = True #last_state3 = True #last_state4 = True #input_state1 = True #input_state2 = True #input_state3 = True #input_state4 = True player = False print ('wait 10sec') time.sleep(10) while True: if (player and not False): if not (pi.read(button1) == 1): os.system('clear') subprocess.call(['killall', 'omxplayer.bin']) #time.sleep(1) subprocess.Popen(['omxplayer', '-b' ,movie1]) player = True if not (pi.read(button2) == 1): os.system('clear') subprocess.call(['killall', 'omxplayer.bin']) #time.sleep(1) subprocess.Popen(['omxplayer', '-b',movie2]) player = True if not (pi.read(button3) == 1): os.system('clear') subprocess.call(['killall', 'omxplayer.bin']) #time.sleep(1) subprocess.Popen(['omxplayer', '-b',movie3]) player = True if not (pi.read(button4) == 1): os.system('clear') subprocess.call(['killall', 'omxplayer.bin']) #time.sleep(1) subprocess.Popen(['omxplayer', '-b',movie4]) player = True else: os.system('clear') subprocess.call(['killall', 'omxplayer.bin']) subprocess.Popen(['omxplayer', '-b', '--loop' ,movie1])
-
Danke!!! Ich sehs mir Mal an!
-
Hallo!
Ich hoffe ich bin im richtigen thread gelandet. Könnte mir jemand helfen den Fehler in der Programmierung zu finden?
Ich habe für ein Museum was gebastelt... Es soll über Knöpfe die man drückt Videos abgespielt werden.. soweit so gut. Das Ziel ist es dass wenn keine Knöpfe gedrückt werden, das Video automatisch läuft. Bisher macht er es nicht und startet tausendmal das Video bis es Heiss wird,... Oder er bleibt schwarz...oder... Oder ..
Brauche es Recht dringend.. wenn jmd helfen kann wär das so ultra!