【问题标题】:discord.py - FFmpegPCMAudio using a lot of CPUdiscord.py - FFmpegPCMAudio 使用大量 CPU
【发布时间】:2020-11-02 02:09:52
【问题描述】:

我使用 discord.py 库制作了一个 Discord 机器人,该库旨在在多个语音频道中播放网络广播。基本上每个频道都是相同的音频流。

我现在正在做的是:

voice_channel.play(discord.FFmpegPCMAudio(stream_url))

但是,每个 FFmpegPCMAudio 使用大约 10% 的 CPU,并且每个 vc 都有一个,所以最终我的机器人在 10 个通道中播放时崩溃了很多(这不是很多)。

由于是同一个流,我尝试了以下方法:

player = FFmpegPCMAudio(stream_url)
for voice_channel in vcs:
    voice_channel.play(player)

但是声音很卡顿(可能是像线程一样按顺序播放声音)

你能想出任何其他方法来减少 CPU 的负载,因为它是在播放相同的音频流吗?可能是 discord.py 技巧或 FFmpeg 技巧,例如手动运行一个 FFmpeg 并将其用于每个通道?

【问题讨论】:

    标签: python ffmpeg discord.py


    【解决方案1】:

    FFmpegPCMAudio 更改为FFmpegOpusAudio 似乎是一种解决方案,因为它大大降低了CPU 使用率。可能不是最好的解决方案,所以我还在等着看是否有某种方法可以只拥有一个 FFmpeg 音频源。

    【讨论】:

    • 这里也一样,谢谢! FFmpegOpusAudio 的使用量减少了 30%
    • 是的,来自FFmpegOpusAudio“而不是像FFmpegPCMAudio那样产生需要编码为Opus的PCM数据包,这个类产生Opus数据包,跳过编码步骤完成图书馆。”
    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2022-01-06
    • 2022-01-26
    相关资源
    最近更新 更多