修复"无法下载视频数据:HTTP错误403:禁止"错误

时间:2020-03-21 11:48:53  来源:igfitidea点击:

YouTube-DL是我最喜欢的和首选命令行下载管理器。
我经常使用它来从互联网下载audios,视频和电影。
今天,我试图用来自我的Linux桌面的YouTube-DL从YouTube下载一个视频,并收到此错误消息无法下载视频数据:HTTP错误403:禁止。
通常,在更新YouTube-DL之后,大多数YouTube-DL错误将被修复。
所以我使用命令更新了YouTube-DL:

$sudo youtube-dl -U

它已经更新了!我有最近的版本。

然后我再次尝试用命令下载视频:

$youtube-dl https://www.youtube.com/watch?v=4jTy5jnMkYc

但我得到了相同的错误:

[youtube] 4jTy5jnMkYc: Downloading webpage
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
ERROR: unable to download video data: HTTP Error 403: Forbidden

如果我们遇到此错误,请按照下面给出的步骤来修复它。

修复"无法下载视频数据:HTTP错误403:禁止"在Linux中使用YouTube-DL下载媒体文件时出错

由于YouTube-DL缓存,可能会发生此错误。
要修复它,只需使用命令删除youtube-dl的缓存:

$youtube-dl --rm-cache-dir

此命令命令将删除youtube-dl的本地缓存目录。
在我的情况下,它删除了以下目录:

Removing cache dir /home/sk/.cache/youtube-dl ...

如果在Python代码中使用youtube-dl,则以下内容将有助于解决此错误。

# 'cachedir': False -> don't use a local caching dir (~/.cache/youtube-dl)
    ydl_opts = {...,
                'cachedir': False
                }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        result = ydl.extract_info(url)

现在,我可以在没有任何问题的情况下下载YouTube视频。

$youtube-dl https://www.youtube.com/watch?v=4jTy5jnMkYc
[youtube] 4jTy5jnMkYc: Downloading webpage
[youtube] 4jTy5jnMkYc: Downloading js player vflset
[youtube] 4jTy5jnMkYc: Downloading js player vflset
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f137.mp4
[download] 100% of 29.87MiB in 00:24
[download] Destination: Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f251.webm
[download] 100% of 5.10MiB in 00:04
[ffmpeg] Merging formats into "Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.mkv"
Deleting original file Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f137.mp4 (pass -k to keep)
Deleting original file Takkar _ Nira Song Lyric Video _ Siddharth _ Sid Sriram _ Gautham Menon _ Nivas K Prasanna-4jTy5jnMkYc.f251.webm (pass -k to keep)

正如我们可能发现的那样,上面的命令中有一个警告消息:

[...]
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[...]

这实际上并不是一个问题,而是youtube-dl命令的预期行为。
默认情况下,YouTube-DL将下载最高质量的音频和最高质量的视频流,然后将它们连接到像MKV,MP4等的兼容容器中,如果这些音频和视频流不适用于MP4容器,YouTube不适合然后,-DL将在MKV容器中包装它们并显示上述警告消息。
在这种情况下,我们可以忽略MKV警告并下载最佳质量视频和最佳质量音频,而是仅在MP4容器中明确提及如下所需的最佳质量音频和视频格式:

$youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' https://www.youtube.com/watch?v=4jTy5jnMkYc