gpt4 book ai didi

python - 如何使用GPIO按钮切换音频播放?

转载 作者:行者123 更新时间:2023-12-02 23:33:18 26 4
gpt4 key购买 nike

我想使用相同的按钮播放和暂停音频文件。这个问题将如何解决?请帮我。我正在使用“aplay”,哪个播放器具有切换功能?
这是python代码:

import RPi.GPIO as GPIO
import time
import os
import subprocess
GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
input_state1=GPIO.input(17)
if input_state1==False:
subprocess.call(["aplay", "temp.wav"])

最佳答案

看来您正在配置输入引脚,到目前为止,这是您正在做的事情:

按下pin时的

  • input_state1将为True,您无需执行任何操作。
  • 如果未按下pin时,input_state1将为False,并且您正在使用temp.wav(ALSA的命令行录音机和播放器)播放aplay文件。

  • 如果我弄错了,请指正我,但我知道您的意图是使用GPIO引脚作为拨动键进行播放和暂停(即,按下时,如果暂停,则应播放;如果正在播放,则应暂停)。

    稍作搜索后, aplay似乎无法像您想要的那样暂停和恢复。如果仍要使用此功能,则可以为Node.js使用此aplay包装器,称为 Node-aplay,该包装器支持此功能。更简单的方法是使用 mpc,您必须首先安装它并进行设置。之后,您可以尝试使用以下代码进行切换:
    import RPi.GPIO as GPIO
    import time
    import os
    import subprocess
    GPIO.setmode(GPIO.BCM)

    GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    # this method is invoked when the event occurs
    def toggle_state(channel):
    subprocess.call(["mpc", "toggle"]) # toggles between play and pause

    # detects GPIO pin press event
    GPIO.add_event_detect(17, GPIO.BOTH, toggle_state, 600)

    try:
    subprocess.call(["mpc", "add", "temp.wav"]) # adds file to the playlist
    subprocess.call(["mpc", "play"]) # starts playing (may need to mention position)
    except KeyboardInterrupt:
    GPIO.cleanup() # clean up GPIO settings before exiting

    如您所见,我添加了 GPIO.add_event_detect来检测被按下的GPIO(了解有关此API的更多信息 here)。我对代码也做了一些评论。希望这可以帮助!

    关于python - 如何使用GPIO按钮切换音频播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228504/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com