discord.py - FFmpegPCMAudio, использующий много CPU - PullRequest
0 голосов
/ 12 июля 2020

Я создал бота Discord, используя библиотеку discord.py, которая предназначена для воспроизведения веб-радио по нескольким голосовым каналам. По сути, это один и тот же аудиопоток для каждого канала.

То, что я делаю прямо сейчас:

voice_channel.play(discord.FFmpegPCMAudio(stream_url))

Однако каждый FFmpegPCMAudio использует около 10% моего процессора, и есть по одному для каждого v c так что, в конце концов, мой бот сильно вылетел при игре на 10 каналах (что немного).

Поскольку это тот же поток, я попробовал следующее:

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

Но звук сильно прерывался (возможно, он проигрывал звук для каждого последовательно, как при многопоточности)

Можете ли вы придумать какой-либо другой способ уменьшить нагрузку на ЦП, поскольку это воспроизводится тот же аудиопоток? Либо трюк с discord.py, либо с уловкой FFmpeg, например, вручную запустить один FFmpeg и использовать его для каждого канала?

1 Ответ

1 голос
/ 13 июля 2020

Переход с FFmpegPCMAudio на FFmpegOpusAudio кажется решением, поскольку он сильно снижает загрузку ЦП. Вероятно, не лучшее решение, поэтому я все еще жду, чтобы узнать, существует ли способ иметь только один источник звука FFmpeg.

...