【问题标题】:discord.py ffmpeg song plays too quickly at the beginningdiscord.py ffmpeg 歌曲一开始播放太快
【发布时间】:2021-12-31 21:18:29
【问题描述】:

我使用 discord.py 和 ffmpeg 构建了一个不和谐机器人,它可以工作,但是前 0-5 秒的歌曲播放速度太快,我认为它正在缓冲,所以我尝试使用 asyncio.sleep 但没有用,建议解决问题?

播放功能:

with youtube_dl.YoutubeDL(self.opts) as ydl:
    await asyncio.sleep(0.1)
    ydl.cache.remove()
    await asyncio.sleep(0.1)
    info = ydl.extract_info(url, download=False)
    raw_url_song = info['formats'][0]['url']
    await self.real_play(ctx, raw_url_song)

real_play 函数:

source = await discord.FFmpegOpusAudio.from_probe(processed_url_song, **self.FFMPEG_OPTIONS)
await asyncio.sleep(0.5)
self.vc.play(source, after=lambda e: asyncio.run_coroutine_threadsafe(self.real_play(ctx, processed_url_song), self.client.loop))

这些是选项:

self.FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
self.OPTIONS = {'format': 'bestaudio'}
self.opts = {'extract_flat': True, 'skip_download': True}

功能是分开的,因为我做了其他事情(例如播放列表),我只报告了理解问题的必要代码,并且缓存删除对于减少 HTTP 404 禁止错误的发生是必不可少的,顺便说一句也没有缓存删除问题依旧

【问题讨论】:

    标签: python ffmpeg discord.py


    【解决方案1】:

    我添加了一个 pause() 和 resume() 函数,其中包含一个 sleep 函数。它有效,但需要一秒钟。

    import asyncio
        
    voice = bot.voice_clients[0]
    voice.play(discord.FFmpegPCMAudio("song.mp3"))
    voice.pause()
    await asyncio.sleep(1)
    voice.resume()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      相关资源
      最近更新 更多