Raspberry Pi随机视频,带GPIO按钮,使用Python

m1m5dgzv  于 2022-11-27  发布在  Python
关注(0)|答案(1)|浏览(118)

所以我不是一个Python开发者,我拼凑了一些有用的东西,但不是像我想的那样。让我来描述一下我 * 想要 * 什么:
在一台古董电视上,我想让圆周率播放连续的随机视频。如果按下一个按钮,我想换成一个新的随机视频,并继续播放随机视频,除非按下另一个按钮。
简单地说,Python代码应该播放随机视频--如果按下一个按钮,就会启动一个不同的随机视频,然后播放更多的随机视频。
背景,我有一个奇妙的恢复1946 Philco Predicta电视,并试图使它在2 o2o更有用.我有我的视频文件夹充满了正确的时期视频和广告...这将是伟大的,当我得到我的代码更好.
这是我目前拼凑出来的。它现在做的是...当我 Boot 系统时,它播放一个随机视频。然后,当按下一个按钮时,它播放随机视频。谁能帮助我更像我想要的那样做吗?

#!/usr/bin/python

import RPi.GPIO as GPIO
import time
import os
import random

buttonPin = 21

directory = "/home/pi/Videos/"

GPIO.setmode(GPIO.BCM)
GPIO.setup(buttonPin, GPIO.IN)

def playEpisode():
    episode = random.choice(os.listdir(directory))
    cmd = "nohup omxplayer --aspect-mode stretch "+"'"+directory+episode+"' &"
#    cmd = "nohup omxplayer -o alsa --aspect-mode stretch "+"'"+directory+episode+"' &"
#    the above w/ added -o alsa for bluetooth speakers fails after the first video. because of how i kill omxplayer? or nohup? further investigation needed.
    print('Killing all omxplayer processes . . .')
    os.system('killall omxplayer.bin')
    os.system(cmd)

try:

#    os.system('clear')
#added below to see if it will play random UNTIL button press...
    playEpisode()
    print('Waiting for button press . . .')
    GPIO.wait_for_edge(buttonPin, GPIO.FALLING)
    print('[x] Recieved button press.')
    print('Playing random video . . .')
    playEpisode()

    #point to location of this file
    os.system('sudo python /home/pi/predicta.py')

except KeyboardInterrupt:
    os.system('killall omxplayer.bin')
    GPIO.cleanup()
ssm49v7z

ssm49v7z1#

#!/usr/bin/python

import time
import os
import random
from gpiozero import Button
from signal import pause
from contextlib import contextmanager
import sys

buttonPin = 21
directory = "/home/pi/Videos/"

@contextmanager
def suppress_stdout():
    with open(os.devnull, "w") as devnull:
        old_stdout = sys.stdout
        sys.stdout = devnull
        try:
            yield
        finally:
            sys.stdout = old_stdout

def playEpisode():
    with suppress_stdout():
        episode = random.choice(os.listdir(directory))
        cmd = "nohup omxplayer --aspect-mode stretch "+"'"+directory+epis$
        os.system('sudo killall omxplayer.bin')
        os.system('sudo killall omxplayer')
        os.system(cmd)

playEpisode()
button = Button(buttonPin)
button.when_released = playEpisode
pause()

我更新了我的代码一点...这个在运行时启动一个随机视频,然后将后藤一个新的随机视频,如果按钮被按下-并将播放一个新的随机视频,如果按钮被按下后,一个随机视频停止...
但我还是想测试omxplayer是否在运行或停止--如果omxplayer停止播放当前的视频,就播放另一个随机视频。
后来,我想在每第三个视频后添加一个广告-但现在不需要。

相关问题