如何在树莓Pi中控制音频播放?

2024-05-16 07:13:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我可以使用omxplayer在树莓的耳机插孔上复制一个文件:

omxplayer -o local --no-keys /home/pi/Desktop/10hRock.mp3 &

但是omxplayer没有停止/暂停命令。您可以在命令运行时按p/s键,但据我所知,python不支持此操作。我试过了

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

如果有别的办法,我很乐意尝试一下

提前感谢:D


Tags: 文件命令功能信息指令pi机器人电报
1条回答
网友
1楼 · 发布于 2024-05-16 07:13:51

我建议和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上的某些主题

相关问题 更多 >