youtube-dl python script postprocessing error: FFMPEG codecs aren't being recognized
youtube-dl python script postprocessing error: FFMPEG codecs aren't being recognized
我的 python 脚本正在尝试使用 youtube-dl.py 下载 youtube 视频。除非需要后处理,否则工作正常。代码:
import youtube_dl
options = {
'format':'bestaudio/best',
'extractaudio':True,
'audioformat':'mp3',
'outtmpl':'%(id)s', #name the file the ID of the video
'noplaylist':True,
'nocheckcertificate':True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}]
}
with youtube_dl.YoutubeDL(options) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
下面是我收到的输出:
如果我尝试将 'preferredcodec' 设置为 'opus' 或 'best',我会遇到类似的错误。
我不确定这是否相关,但我可以 运行 对应的命令行很好:
youtube-dl -o 'test2.%(ext)s' --extract-audio --audio-format mp3 --no-check-certificate https://www.youtube.com/watch?v=BaW_jenozKc
我从互联网和其他问题中得到了一些线索,据我所知,这很可能是我的 ffmpeg 的问题,它不是 python 模块,对吗?这是我的 ffmpeg 版本和配置:
如果我的问题的答案是向我的 ffmpeg 添加一些配置设置,请解释我是如何去做的。
这是 youtube-dl 和 ffmpeg 之间相互作用的错误,由文件名中缺少扩展名引起。 youtube-dl 调用 ffmpeg。由于文件名不包含任何扩展名,youtube-dl 要求 ffmpeg 生成一个临时文件 mp3
。但是,ffmpeg 通过扩展名自动检测输出容器类型并失败,因为 mp3
没有扩展名。
作为解决方法,只需在您的文件名模板中添加 %(ext)s
:
'outtmpl': u'%(id)s.%(ext)s',
我的 python 脚本正在尝试使用 youtube-dl.py 下载 youtube 视频。除非需要后处理,否则工作正常。代码:
import youtube_dl
options = {
'format':'bestaudio/best',
'extractaudio':True,
'audioformat':'mp3',
'outtmpl':'%(id)s', #name the file the ID of the video
'noplaylist':True,
'nocheckcertificate':True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}]
}
with youtube_dl.YoutubeDL(options) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
下面是我收到的输出:
如果我尝试将 'preferredcodec' 设置为 'opus' 或 'best',我会遇到类似的错误。 我不确定这是否相关,但我可以 运行 对应的命令行很好:
youtube-dl -o 'test2.%(ext)s' --extract-audio --audio-format mp3 --no-check-certificate https://www.youtube.com/watch?v=BaW_jenozKc
我从互联网和其他问题中得到了一些线索,据我所知,这很可能是我的 ffmpeg 的问题,它不是 python 模块,对吗?这是我的 ffmpeg 版本和配置:
如果我的问题的答案是向我的 ffmpeg 添加一些配置设置,请解释我是如何去做的。
这是 youtube-dl 和 ffmpeg 之间相互作用的错误,由文件名中缺少扩展名引起。 youtube-dl 调用 ffmpeg。由于文件名不包含任何扩展名,youtube-dl 要求 ffmpeg 生成一个临时文件 mp3
。但是,ffmpeg 通过扩展名自动检测输出容器类型并失败,因为 mp3
没有扩展名。
作为解决方法,只需在您的文件名模板中添加 %(ext)s
:
'outtmpl': u'%(id)s.%(ext)s',