【问题标题】:How to control audio playback in a Raspberry Pi?如何在 Raspberry Pi 中控制音频播放?
【发布时间】:2020-08-19 08:03:24
【问题描述】:

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

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

我可以使用 omxplayer 复制 Raspberry 耳机插孔上的文件:

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

但是omxplayer 没有停止/暂停命令。您可以在没有--no-keys 的情况下在命令运行时按 p/s,但据我所知,python 不支持此功能。我试过os.system()

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

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

提前致谢:D

【问题讨论】:

    标签: python python-3.x audio raspberry-pi playback


    【解决方案1】:

    我建议使用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上的一些主题

    【讨论】:

    • 哇,正在进行大量研究!谢谢!我将在这周明确地尝试一下,如果它有效,则将此答案标记为正确:D
    • @EricRoy :那么您可以在 Raspberry Pi 上根据需要设置输出设备吗?
    • 嗯,我首先在 VLC 应用程序上寻找音频设备,一旦我找到它,我就可以设置它。我发现它比打印所有设备更容易,但效果也很好,所以谢谢! :D
    • 不错,简单有效:)
    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多