如何按下按钮首先停止播放音频文件然后播放自己的音频?

时间:2016-08-03 06:49:59

标签: python button audio raspberry-pi gpio

我的问题是,每个按钮下的音频文件非常冗长,如果我按错了按钮,我将不得不等待它播放结束。如何按下每个按钮以1)停止可能播放的音频文件然后2)播放它自己的文件? 我使用mpg123播放音频文件,文件名是占位符。

代码:

#!/usr/bin/env python

import os
from time import sleep
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(20, GPIO.IN)
GPIO.setup(21, GPIO.IN)
GPIO.setup(22, GPIO.IN)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
GPIO.setup(25, GPIO.IN)
GPIO.setup(26, GPIO.IN)
GPIO.setup(27, GPIO.IN)

while True:

    if (GPIO.input(18)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(19)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(20)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(21)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(22)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(23)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(24)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(25)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(26)==False):
        os.system('mpg123 audio.mp3 &')
    if (GPIO.input(27)==False):
        os.system('mpg123 audio.mp3 &')

sleep(0.1):

1 个答案:

答案 0 :(得分:0)

您可以异步使用subprocess,以便函数调用立即返回。我认为可以获得一个“句柄”对象来与外部流程进行通信,这也允许您“kill”它。

同样,您可以检查主程序中的键并启动一个线程进行播放:http://docs.python.org/3/library/threading.html(没有多大意义,因为其他程序无论如何都是新进程)。