FFmpeg не воспроизводит звук через Discord.py BOT - PullRequest
0 голосов
/ 09 мая 2019

Вот мой код для функции воспроизведения моего бота Discord:

@bot.command()
async def play(ctx, url:str = None): # DOESN'T WORK, DOWNLOADS BUT DOESN'T PLAY

        ...

        ytdl_options = {
            'format': 'bestaudio/best',
            'postprocessors': [{
                'key': 'FFmpegExtractAudio',
                'preferredcodec': 'mp3',
                'preferredquality': '192',
            }],
        }
        ytdl = youtube_dl.YoutubeDL(ytdl_options)

        loop = asyncio.get_event_loop()
        data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url))


        if 'entries' in data:
            data = data['entries'][0] # taking top item from a YT playlist

        source = ytdl.prepare_filename(data)

        vc.play(discord.FFmpegPCMAudio(source)) #play audio
        print(vc.is_playing())
        await ctx.send("Now playing: " + data.get('title')) #now playing
        asyncio.sleep(3)
        print(vc.is_playing())

Когда я вызываю функцию, она работает нормально и загружает видео с youtube-dl, затем отправляет сообщение «Сейчас играет: X», но не воспроизводит звук.

Я добавил две print(vc.is_playing()) строки, и в оболочке возвращается:

True
False

Так ясно, что он пытается воспроизвести песню, но сразу терпит неудачу.

Нет исключений, поэтому я не могу понять, почему FFmpeg не хочет воспроизводить аудио.

...