如何控制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
上的一些主题
我正在构建一个安装在我的 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
上的一些主题