簡體   English   中英

如何使按鈕按下,先停止播放音頻文件,然后播放其自己的音頻?

[英]How do I make button press first stopping a playing audio file and then playing its own audio?

我的問題是,每個按鈕下的音頻文件都很長,如果我按錯了按鈕,則必須等待它播放結束。 如何使每個按鈕按下到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):

您可以異步使用子流程,以便函數調用立即返回。 我認為有可能獲得一個“句柄”對象與外部進程進行通信,這也使您可以“ 殺死 ”它。

同樣,您可以檢查主程序中的鍵並啟動一個播放線程: http : //docs.python.org/3/library/threading.html (因為另一個程序是一個新進程,所以意義不大)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM