python - youtube-dl python 脚本后处理错误 : FFMPEG codecs aren't being recognized

标签 python youtube ffmpeg youtube-dl

我的 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'])

以下是我收到的输出:enter image description here

如果我尝试将“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 版本和配置: enter image description here

如果我的问题的答案是向我的 ffmpeg 添加一些配置设置,请解释我如何做到这一点。

最佳答案

这是 youtube-dl 和 ffmpeg 之间相互作用的错误,由文件名中缺少扩展名引起。 youtube-dl 调用 ffmpeg。由于文件名不包含任何扩展名,youtube-dl 要求 ffmpeg 生成一个临时文件 mp3。但是,ffmpeg 通过扩展名自动检测输出容器类型,并失败,因为 mp3 没有扩展名。

作为解决方法,只需在文件名模板中添加 %(ext)s 即可:

'outtmpl': u'%(id)s.%(ext)s',

关于python - youtube-dl python 脚本后处理错误 : FFMPEG codecs aren't being recognized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665160/

相关文章:

node.js - 在 NodeJs 中杀死由 spawn 触发的 FFmpeg 进程

python - 在 Tensorflow 中,当使用 dataset.shuffle(1000) 时,我是否只使用了整个数据集中的 1000 个数据?

python - 无法在 python 3.7 中安装 http 模块

Python 等效于 Curl HTTP post

javascript - 嵌入 YouTube 视频 - 他们是怎么做到的?

ffmpeg - 在为 HLS 直播流生成 .ts 段时如何设置 "set"连续性计数器?

python - 只能在安装目录中导入 python 模块

javascript - 在模式关闭时暂停 YouTube 视频

javascript - 如何获得 youtube 视频的直接链接和不同的分辨率?

FFMPEG 脚本用于合并列表中的所有文件并制作 1920x1080p 60fps mp4 视频