使用 Youtube-dl 将缩略图嵌入到 mp3 引发异常
Embedding thumbnail to mp3 with Youtube-dl raise exception
我正在尝试使用 youtube-dl 将一些 youtube 视频声音下载为 mp3 并嵌入缩略图。
但是我每次尝试都会收到以下错误:
thumbnail_filename = info['thumbnails'][-1]['filename'] KeyError: 'filename'
这是我的 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'},]}
知道为什么吗?嵌入缩略图没有任何参数。
谢谢
虽然 youtube-dl 上没有记录它 api,但我自己想出了它。
您需要将 'writethumbnail':True
添加到选项,并更改 post 处理器上的顺序,以便 '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',},]}
我不得不独立解决这个问题,但我使用了 Gigalala 来完成最后一步。
这是一个有效的 Youtube-DL / yt_dlp 选项变量,用于下载带有缩略图和元数据的 mp3。
ydl_opts = {
'format': 'bestaudio[ext=mp3]/best',
'writethumbnail': True,
'postprocessors': [
{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3','preferredquality': '192'},
{'key': 'FFmpegMetadata', 'add_metadata': 'True'},
{'key': 'EmbedThumbnail','already_have_thumbnail': False,}
],
}
我发现后处理器的顺序非常重要。我必须先嵌入元数据,因为它会擦除嵌入缩略图。这是 Youtube-DL 不通过 python 版本嵌入缩略图的修复。
我正在尝试使用 youtube-dl 将一些 youtube 视频声音下载为 mp3 并嵌入缩略图。 但是我每次尝试都会收到以下错误:
thumbnail_filename = info['thumbnails'][-1]['filename'] KeyError: 'filename'
这是我的 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'},]}
知道为什么吗?嵌入缩略图没有任何参数。
谢谢
虽然 youtube-dl 上没有记录它 api,但我自己想出了它。
您需要将 'writethumbnail':True
添加到选项,并更改 post 处理器上的顺序,以便 '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',},]}
我不得不独立解决这个问题,但我使用了 Gigalala 来完成最后一步。
这是一个有效的 Youtube-DL / yt_dlp 选项变量,用于下载带有缩略图和元数据的 mp3。
ydl_opts = {
'format': 'bestaudio[ext=mp3]/best',
'writethumbnail': True,
'postprocessors': [
{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3','preferredquality': '192'},
{'key': 'FFmpegMetadata', 'add_metadata': 'True'},
{'key': 'EmbedThumbnail','already_have_thumbnail': False,}
],
}
我发现后处理器的顺序非常重要。我必须先嵌入元数据,因为它会擦除嵌入缩略图。这是 Youtube-DL 不通过 python 版本嵌入缩略图的修复。