使用 Youtube-dl 将缩略图嵌入 mp3 引发异常

Gig*_*ala 6 python youtube-dl

我正在尝试使用 youtube-dl 将一些 youtube 视频声音下载为 mp3 并嵌入缩略图。但是每次尝试时都会出现以下错误:

thumbnail_filename = info['thumbnails'][-1]['filename'] KeyError: 'filename'
Run Code Online (Sandbox Code Playgroud)

这是我的 youtube-dl 选项

    ydl_opts = {
        'key':'IgnoreErrors',
        'format': 'bestaudio/best',
        'download_archive': self.songs_data,
        'outtmpl': '/'+download_path+'/'+'%(title)s.%(ext)s',
        'progress_hooks': [self.my_hook],
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192'},
            {'key': 'EmbedThumbnail'},]}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?嵌入缩略图没有任何参数。

谢谢

Gig*_*ala 8

所以我自己想通了,虽然它没有记录在 youtube-dl api 上。您需要添加'writethumbnail':True到选项,并更改订单上的后处理器,以便'key': 'FFmpegExtractAudio'为前'key': 'EmbedThumbnail'

    ydl_opts = {
        'writethumbnail': True,
        'format': 'bestaudio/best',
        'download_archive': self.songs_data,
        'outtmpl': '/'+download_path+'/'+'%(title)s.%(ext)s',
        'progress_hooks': [self.my_hook],
        'postprocessors': [
            {'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192'},
            {'key': 'EmbedThumbnail',},]}
Run Code Online (Sandbox Code Playgroud)

  • 添加到“**Gigalala**”答案中。请注意,您必须将文件下载为 **".webm"**,这就是使用 **".%(ext)s"** 的原因。如果您将它更改为“outtmpl”中的静态“.mp3”,您将像我一样进行长时间的调试。 (2认同)