Pygame - 无法播放由 youtube-dl 下载的 mp3 文件

Pygame - playing mp3 files downloaded by youtube-dl is not working

您好,我正在尝试通过 youtube-dl 下载一个 mp3 文件,然后使用 PyGame 在我的机器上播放它。但是,所有下载的 mp3 文件都不起作用。奇怪的是,如果我自己通过从互联网上手动下载并放入文件夹来导入它们,那么就没有问题。有没有人经历过这样的事情?问题的原因可能是什么?

def playMusic():
    ydl_opts = {
        'outtmpl': '%(id)s' + '.mp3',
        'format': 'bestaudio/best',
        'audioformat': 'mp3'
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download(['https://www.youtube.com/watch?v=TKTg3Wg1keg'])
    startPlayer()

def startPlayer():
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load('TKTg3Wg1keg.mp3')
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        pygame.time.Clock().tick(10)

playMusic()

youtube-dl 没有 audioformat 密钥。要下载 mp3,请设置后处理器。改编自 another answer:

ydl_opts = {
    'format': 'bestaudio/best',
    'outtmpl': '%(id)s.%(ext)s',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['http://www.youtube.com/watch?v=TKTg3Wg1keg'])

请注意,YouTube 目前不提供本地 mp3,因此总是需要重新编码。跳过重新编码为mp3并直接播放下载的m4a文件可能会更快。