如何在播放媒体文件时添加结束 Python 循环
How to add end a Python loop while a media file is playing
Python 的新功能,使用 Raspberry Pi、GPIO 和 pygame。如果在播放媒体文件时按下按钮,我想结束循环。
现在我有了它,所以你按下按钮,mp3 文件就会一直播放(这是一个 30 分钟的剪辑)。我希望这样,如果再次按下按钮,媒体会重置并从头开始播放。
我尝试添加一个中断和一个 if 语句,但它只是忽略它,因为 mp3 文件已经在播放。我该怎么做?
我的代码如下所示:
while True:
while GPIO.input(buttonPin) == GPIO.LOW:
if GPIO.input(buttonPin) == GPIO.LOW:
pygame.mixer.init()
pygame.mixer.music.load(open("audio.mp3"))
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(1)
else:
break
试试这个:
musicplay = False #This variable will be used as a "toggle". When the button is pressed, it will flick from false to true, or true to false
def playbackmedia(): # Define function that is called when button pin is pressed
global musicplay # musicplay is a global variable that is outside of the scope of function
musicplay = not musicplay # Here we are toggling the music play
if musicplay: # if music play is true, play music
pygame.mixer.init()
pygame.mixer.music.load(open("audio.mp3"))
pygame.mixer.music.play()
else: # if music play is false, stop the music
pygame.mixer.stop()
def loop():
#GPIO here add_event_detect will detect when the buttonPin has a falling edge (Just as the button is pressed)
#The bounce time is to give you enough time for the signal to be read clearly. If this wasn't used, when you press the button,
#because of mechanical vibration, the connections fluctuate and it could be read by the Pi as pressing the button really quickly over and over
#again until you let go of the button. You have 300 milliseconds to let go of the button before the playback media function is called
GPIO.add_event_detect(buttonPin, GPIO.FALLING, callback=playbackmedia, bouncetime=300)
while True:
pass
我建议您访问 pygame 网站以了解有关如何控制混音器的更多详细信息。
https://www.pygame.org/docs/ref/mixer.html
我还建议您访问此网站以获取有关 GPIO.RPi 模块的更多信息
https://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/
Python 的新功能,使用 Raspberry Pi、GPIO 和 pygame。如果在播放媒体文件时按下按钮,我想结束循环。
现在我有了它,所以你按下按钮,mp3 文件就会一直播放(这是一个 30 分钟的剪辑)。我希望这样,如果再次按下按钮,媒体会重置并从头开始播放。
我尝试添加一个中断和一个 if 语句,但它只是忽略它,因为 mp3 文件已经在播放。我该怎么做?
我的代码如下所示:
while True:
while GPIO.input(buttonPin) == GPIO.LOW:
if GPIO.input(buttonPin) == GPIO.LOW:
pygame.mixer.init()
pygame.mixer.music.load(open("audio.mp3"))
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(1)
else:
break
试试这个:
musicplay = False #This variable will be used as a "toggle". When the button is pressed, it will flick from false to true, or true to false
def playbackmedia(): # Define function that is called when button pin is pressed
global musicplay # musicplay is a global variable that is outside of the scope of function
musicplay = not musicplay # Here we are toggling the music play
if musicplay: # if music play is true, play music
pygame.mixer.init()
pygame.mixer.music.load(open("audio.mp3"))
pygame.mixer.music.play()
else: # if music play is false, stop the music
pygame.mixer.stop()
def loop():
#GPIO here add_event_detect will detect when the buttonPin has a falling edge (Just as the button is pressed)
#The bounce time is to give you enough time for the signal to be read clearly. If this wasn't used, when you press the button,
#because of mechanical vibration, the connections fluctuate and it could be read by the Pi as pressing the button really quickly over and over
#again until you let go of the button. You have 300 milliseconds to let go of the button before the playback media function is called
GPIO.add_event_detect(buttonPin, GPIO.FALLING, callback=playbackmedia, bouncetime=300)
while True:
pass
我建议您访问 pygame 网站以了解有关如何控制混音器的更多详细信息。
https://www.pygame.org/docs/ref/mixer.html
我还建议您访问此网站以获取有关 GPIO.RPi 模块的更多信息
https://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/