Youtube_dl:错误:YouTube表示:无法提取视频数据

131

我正在使用Python 3制作一个小型的图形界面,它应该可以通过其URL下载YouTube视频。 我使用了youtube_dl模块来实现这一功能。 这是我的代码:

import youtube_dl # Youtube_dl is used for download the video

ydl_opt = {"outtmpl" : "/videos/%(title)s.%(ext)s", "format": "bestaudio/best"} # Here we give some advanced settings. outtmpl is used to define the path of the video that we are going to download

def operation(link):
    """
    Start the download operation
    """
    try:
        with youtube_dl.YoutubeDL(ydl_opt) as yd: # The method YoutubeDL() take one argument which is a dictionary for changing default settings
            video = yd.download([link]) # Start the download
        result.set("Your video has been downloaded !")
    except Exception:
        result.set("Sorry, we got an error.")

operation("https://youtube.com/watch?v=...")

当我执行我的代码时,我遇到了这个错误:

ERROR: YouTube said: Unable to extract video data

我在这里看到说这是因为找不到任何视频信息,我该如何解决这个问题?


1
如果您能将问题简化到出现错误的特定部分,那么这个问题会更容易引起关注。我经常担心没有包含足够的数据,但人们通常更愿意回答简单的问题,而不是一开始看起来像“帮我做这个”的问题。我并不是在怀疑您,但人们会经常点击、浏览并返回此类问题。 - Solebay Sharp
这个错误是针对任何视频还是特定的视频引发的?(我记得在 Reddit 上读到过,这可能是因为年龄门槛而发生的) - Minion Jim
1
我刚刚测试了你的代码,它可以正常工作,除了 URL 错误这个事实。首先,你拼错了 https(你写成了 htps),其次应该是 /watch 而不是 ?watch,所以你的操作调用行将变为 operation("https://youtube.com/watch?v=...")。我想这只是一个问题的笔误,但我希望这能解决它(我无法重现你的错误)。 - Minion Jim
抱歉,这只是打字错误。它并没有解决问题。我认为问题来自于Windows解释器,因为当我尝试直接在Windows命令中运行我的程序时,它告诉我“找不到名为youtube_dl的模块”,而我已经安装了它... - Bastien
使用 sudo youtube-dl 链接 命令下载视频。在 youtube-dl 命令前加上 sudo - Udesh
显示剩余8条评论
10个回答

207

更新youtube-dl对我很有帮助。根据您安装方式的不同,以下是相关命令:

  • youtube-dl --update(自更新)
  • pip install -U youtube-dl(通过Python安装)
  • brew upgrade youtube-dl(在macOS + homebrew上更新)
  • choco upgrade youtube-dl(在Windows + Chocolatey上更新)

37
使用命令 pip install -U youtube-dl 安装或升级 Youtube 视频下载工具。 - yW0K5o
11
在我的情况下,执行brew upgrade youtube-dl - vbwx
2
在我的情况下,运行“choco upgrade youtube-dl”命令。 - P. Pedrycz
3
如果您来自Ubuntu/Debian,最好不要依赖apt软件库进行安装,而是按照youtube-dl github页面上的其他方法进行安装:https://github.com/ytdl-org/youtube-dl#installation - Norman Breau
4
别忘了先输入"sudo"再运行"youtube-dl --update"命令,否则可能会出现如下错误:"ERROR: no write permissions on /usr/local/Cellar/youtube-dl/2020.03.24/bin/youtube-dl"。这是由于权限问题引起的错误,与youtube-dl本身无关。 - Oguzhan Bolukbas
显示剩余8条评论

94

对于 Ubuntu 用户:

sudo apt purge youtube-dl 
sudo pip3 install youtube-dl
hash youtube-dl

如果你遇到了错误:"ERROR: ffprobe/avprobe and ffmpeg/avconv not found. Please install one.",你可以通过以下方式简单解决:sudo apt install ffmpeg - Artur
5
你可能需要的第三个命令是:hash youtube-dl - Brent Baccala
1
@BrentBaccala 这应该添加在答案中。 - Ashish Kumar
同样的错误再次发生,导致操作失败。 - ivanlan

15

请只返回翻译后的文本,而不是图像。 - William Baker Morrison

12

在Ubuntu上唯一有效的方法是使用Debian程序包/.deb文件进行安装:

wget http://ftp.de.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.02.04.1-1_all.deb
sudo apt install ./youtube-dl_2021.02.04.1-1_all.deb

1
@CharithJayasanka .deb 文件会不时更新...只需下载和安装最新版本,例如(截至今天)http://ftp.de.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.02.10-1_all.deb - HotDogCannon

11

安装yt-dlp作为youtube-dl的替代品

节省时间,使用pip和python 3.7+安装yt-dlp

python -m pip install -U yt-dlp

那么

yt-dlp video_url -o /path/to/output.mp4

例如:

yt-dlp https://www.youtube.com/watch?v=gKCvphbCpPE -o ~/Videos/my_video.mp4

为什么使用yt-dlp?

引用自软件包存储库:

yt-dlp是基于现已停止维护的youtube-dlc的youtube-dl分支。该项目的主要重点是添加新功能和补丁,同时也与原始项目保持最新。

在我经历了将近一个痛苦的小时搜索后,yt-dlp对我很有帮助。


出现相同的错误,所以不行。 - ivanlan
@ivanlan,你卸载了之前安装的youtube-dl吗?如果你使用的是Ubuntu系统,请尝试运行which youtube-dl命令来查看是否还安装了youtube-dl。使用yt-dlp video_url命令如何? - William Le
找到了问题所在:我运行程序的机器仍在使用Python 3.6,而最新的yt-dlp和youtube-dl工作版本已经不支持该版本。我切换到另一台安装有Python 3.8的机器上,yt-dlp可以正常工作。虽然我还没有尝试过youtube-dl,但由于yt-dlp表现良好,我可能不会再去尝试了。 - ivanlan
@ivanlan 很高兴你解决了这个问题,youtube-dl似乎没有得到维护。顺便说一下,你应该使用pyenv在不同的Python版本之间进行切换。 - William Le
1
这个方法可行。这里提到的许多其他解决方案对我来说都失败了。 - AndyJost

10

Ubuntu 用户:

解决这个问题最简单, 最快的方法就是完全删除 Youtube-dl 并重新安装它, 使用 .deb 文件和 apt。首先, 从系统中清除它。

sudo apt purge youtube-dl 

sudo pip3 uninstall youtube-dl

接下来,前往此处 (http://ftp.us.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.12.17-1_all.deb)下载 .deb 文件。下载完成后,使用以下命令通过apt进行安装,这将解决您的问题。请确保您的版本号和文件名正确。

sudo apt install ./youtube-dl_2021.12.17-1_all.deb

如果这个解决方案对您有帮助,请为其投票,以便其他人可以轻松找到它。


7

如果您在 MacOsx 上使用 youtube-dl 命令行,请使用以下命令进行更新:

sudo youtube-dl --update


1
请添加注释而不是编写新答案。因为Manoj D Bhat已经在2020年12月10日8:30回答了,比您早11天。 - Oguzhan Bolukbas

6
如果您已经安装了pip,可以使用它来更新 youtube-dl。下面是帮助您完成此操作的命令: sudo pip install --upgrade youtube_dl

4

如果有些视频是年龄限制的,可以尝试添加一个Cookie文件。使用这个Chrome插件Cookie.txt将你的Cookie下载到txt文件中,然后使用这些--cookies /path/to/cookies/file.txt标志,不要忘记将其正确路径放在你的cookies.txt文件。

示例:

youtube-dl -n --cookies ~/Downloads/cookies.txt https://www.youtube.com/watch\?v\=h7Ii7KKapig

Surce


你的链接 [Chrome 插件 Cookie.txt][https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg/related] 已经失效 - woodz
请安装此扩展程序:https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid/related?hl=en,以便获取cookies.txt文件。 - woodz
需要使用-n选项吗?没有它就无法工作... - nephewtom
ERROR: 0TYq9RjdYYU: YouTube said: Invalid parameters. - Francesco Mantovani

1

Youtube-dl软件包使用Python代码,并寻找正确的Python版本来运行。如果您有Python3,则输入:

sudo sed -i '1s/python/python3/' /usr/local/bin/youtube-dl


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接