如何控制Raspberry Pi中的音频播放?

How to control audio playback in a Raspberry Pi?

我正在构建一个安装在我的 Raspberry Pi 上的 Telegram 机器人,它将执行多种功能。其中之一是在 Raspberry 中 play/pause/stop 一个 10 小时的 mp3 文件。所以我需要的是用电报消息控制音频播放。

为了简化它,我可以将一些指令保存到一个 .txt 文件中,另一个 python(或 shell)脚本将检查这些指令并对音频播放器执行操作。

我可以使用 omxplayer:

在 Raspberry 的耳机插孔上复制文件
omxplayer -o local --no-keys /home/pi/Desktop/10hRock.mp3 &

但是omxplayer没有stop/pause命令。您可以在命令为 运行 时按 p/s 而无需 --no-keys,但据我所知 python 不支持此操作。我试过了 os.system().

所以我的问题是:是否有处理 mp3 文件播放的库,AND 允许我在 HDMI 或耳机插孔输出之间进行选择? (或者确保音频始终通过插孔的简单方法)

如果有其他方法可以解决这个问题,我很乐意尝试一下!

提前致谢:D

我建议 VLC

pip install python-vlc

然后简单地:

import vlc
from time import sleep

p = vlc.MediaPlayer(audio_file_path)
p.play()
sleep(2)
p.pause()
sleep(2)
p.play()
sleep(2)
p.stop()

关于音频输出的变化,它有点棘手,环顾四周,你可以从这些方面开始:

instance = vlc.Instance()
mediaPlayer = instance.media_player_new()
mediaPlayer.set_mrl(audio_file_path)
device_list = instance.audio_output_enumerate_devices()
for dev in device_list:
    print(dev)

在 Windows 上,我卡住了,因为我没有获得任何设备 ID,而且似乎无法设置输出。 无论如何,之后你可以将这些方法应用于播放器:

mediaPlayer.audio_output_set(device_name)
mediaPlayer.audio_output_device_set(device_name,device_ID)

查看 VLC Forum

上的一些主题