You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4外接10键音效板按键音效循环播放如何改为单次播放

音效板单次播放修改方案

问题根因

你的音效循环播放是两处配置共同导致的:

  • VLC实例初始化时传入了--input-repeat=999999参数,这个参数的作用是让音频重复播放近10万次,等价于无限循环
  • playTrack函数的逻辑仅触发了播放动作,没有做播放结束后的停止处理,和你看到的Play an audio track indefinitely注释对应

具体修改步骤

1. 移除VLC的循环播放参数

找到第11行的VLC实例初始化代码:

instance = vlc.Instance('--input-repeat=999999')

修改为:

instance = vlc.Instance()

移除重复播放参数后,VLC默认就会运行在单次播放模式下。

2. 完善playTrack函数的播放结束逻辑

找到playTrack函数,在现有代码末尾添加等待播放结束、自动停止的逻辑,修改后的完整函数如下:

def playTrack(track):
    ''' 播放单次音频 '''
    from readchar import readkey

    # Load and add media file
    media = instance.media_new(track)
    player.set_media(media)

    # Play
    player.play()

    # Pause before getting the status, to update everything
    print(str(player.get_state()) + "          ", end='\r')
    sys.stdout.flush()
    time.sleep(1)
    
    print(str(player.get_state()) + "          ")

    # 新增:等待音频播放完成后自动停止
    while player.is_playing():
        time.sleep(0.1)
    player.stop()
    # 重置播放状态标记,保证播放暂停功能正常
    global active
    active = False

功能验证

修改完成后重新运行脚本即可生效:

  • 按下数字按键,对应音效只会播放一次,播放结束后自动停止,不会循环
  • 原有的预设切换、+键播放暂停、x键退出功能不受影响

内容的提问来源于stack exchange,提问作者wilsonachilles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:08