树莓派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
相关产品推荐
相关产品推荐

