使用youtube-dl从YouTube视频下载所有内容


16

我想从YouTube视频(例如,视频)下载所有内容(字幕,卡片,标签,注释,缩略图等(显然还有带音频的视频))。

我正在使用,youtube-dl并且要使用大量的开关,因此似乎找不到满足我需要的任何东西。我还想以尽可能高的质量下载视频/音频,而又不损失质量。即使不是YouTube,我也确实想下载自己购买的一些udemy课程,以便在长途旅行中可以观看它们。

我已经ffmpeg安装了,听说您要从YouTube进行无损下载需要此文件,但是我不确定如何将其与链接youtube-dl

这是我第一次使用youtube-dl,因此不胜感激。

Answers:


14

您需要的相关选项:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

将其复制到您的配置文件(/etc/youtube-dl.conf~/.config/youtube-dl/config)。

使用该配置,我下载了该视频youtube-dl编写了以下文件:

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

我无法mediainfo在此处发布输出,因为它超出了字符数限制,但是您可以在github中看到它。


我还想以尽可能高的质量下载视频/音频,而又不损失质量。

youtube-dl默认情况下,系统会以最高质量下载视频,但您可以使用强制这种行为--format bestvideo+bestaudio/best


即使不是YouTube,我也确实想下载自己购买的一些udemy课程,以便在长途旅行中可以观看它们。

请阅读文章我可以将课程下载到我的计算机吗?

默认情况下,无法从计算机下载完整课程。我们出于对盗版的关注而这样做。

请注意,您始终可以保存课程,以在Udemy移动应用程序上进行离线查看。有关如何将视频讲座下载到iOS移动设备的信息,请单击此处。有关如何下载视频以在Android设备上离线观看的步骤,请单击此处


我已经ffmpeg安装了,听说您要从YouTube进行无损下载需要此文件,但是我不确定如何将其与链接youtube-dl

youtube-dlavconv默认使用,但--prefer-ffmpeg您可以ffmpeg改用。无论如何,“ 无损下载 ” 不需要此选项。在我提供的示例中,youtube-dl仅用于ffmpeg将所有下载的格式合并为一个mkv文件。


这会将YouTube的信息嵌入到视频中吗?我不是完全想要那个,我只是想让它下载它,但是将它们全部保存在单独的文件中,有点像它的样子:)
leetbacoon

.mkv是使用的无损视频的默认容器youtube-dl吗?
leetbacoon

哦,您如何下载视频?youtube-dl [youtube-link]
leetbacoon

1
@leetbacoon我明白了。我将添加一个错误报告。
nxnev

1
@leetbacoon回到我写这个答案的时候,情况恰恰相反,youtube-dl如果--youtube-skip-dash-manifest不存在该选项,则无法下载某些视频。刚刚删除了该选项,谢谢您告诉我。
nxnev

6

要简单地下载视频,您可以使用以下方法:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

要选择视频质量,首先应使用-F选项列出可用的格式。

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

这是您的视频的输出:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

以下是字幕的一些有用选项:

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

对于缩略图:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

您还可以在此处找到有关视频质量的更多信息


4
您希望通过手动格式选择实现什么?youtube-dl默认情况下使用最佳的可用视频和音频格式。如果要覆盖配置文件中的其他设置,则可以使用-f bestvideo+bestaudio/best(与默认设置相同)或忽略配置文件(--ignore-config)。
David Foerster,

不要在此引用我的信息,但是我想我早些时候读过,要获得具有音频的无损视频,您只需使用youtube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon

想知道,如果1440p可用,为什么1080p副本被认为是最好的呢?为什么显示2160p?该选项没有出现在我的末端(上限为1440p)
leetbacoon

3

@leetbacoon在底部看到评论回复。(低代表仍然很抱歉)

注意:我将使用较长的开关名称以避免混淆。使用的许多开关版本较短。请参阅文档:选项

注意: -为了视觉方便\,用于单独显示开关;全部\可以省略;如果使用\确保后面没有空格\


概要: 一个ytdl命令,用于下载具有最高可用视频和音频质量的单个视频文件。将视频保存到自己的目录(由您指定)中。下载所有可用的元数据,将每个元数据写入各自的文件格式,然后保存在同一目录中。将视频元数据添加到视频输出文件。

用您自己的代替:

  • 更换/archive/videos/TED_Archive/的开关--download-archive,并--output与您选择的目录路径。
  • 示例存储路径/ archive / videos
  • 示例视频链接:https : //www.youtube.com/watch?v=0bFs6ZiynSU
  • 示例频道目录/ TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

注意:' '为了安全起见,将所有自变量括起来。 推荐开关的

说明

  • --limit-rate '0.25M'用于限制每个youtube-dl实例的可用最大下载速度,以B / s(每秒字节数)为单位。
    参数:任何带大写单位后缀的正整数。
    单位后缀: K代表千字节;M代表兆字节;不清楚是否支持技嘉。
    补充:
    1.避免互联网连接阻塞。
    2.在管理多个并发ytdl实例的下载速度时很有帮助。
    遗漏:
    1.阻塞互联网;无法浏览,落后于youtube视频播放。
    2.将尽快下载视频。
    注意:您可以同时运行多个youtube-dl实例。

  • --retries '5'用于在失败后自动重试视频下载。在下载播放列表或整个频道(用Youtube来说,也是该特定频道的播放列表)时很有用。
    值:选择任何正整数。默认值为10。最大为infinite(输入为文字字符串)。

  • --continue
    参数:
    添加:
    1.将强制恢复部分文件的 下载版本
    注意: ytdl以块的形式下载视频;如果ytdl在下载过程中意外终止,则保留大块。
    省略:
    1.默认情况下,ytdl将尽可能恢复下载。

  • --no-overwrites
    参数:
    增加:不会覆盖现有的具有相同名称的元数据文件。
    忽略:将覆盖具有相同名称的现有元数据文件,但不会覆盖视频文件。

    • --call-home 用于联系ytdl服务器进行调试。

      “如果您的服务器具有多个IP,或者您怀疑审查制度,则添加--call-home可能是获取更多诊断信息的好主意。” – 文档:错误,检索到20180408,

  • --write-info-json
    参数:
    输出格式: json;
    信息内容:观看次数,点赞次数,上传日期,视频和音频质量信息等(但不包括视频文字描述(由上传者在视频下方发布(2018 youtube布局)))
    补充:将视频元数据写入单独的.info.json文件中。与视频文件保存在同一文件夹中。
    省略:不会影响--add-metadata哪个仍会将视频元数据写入视频输出文件。

  • --write-description
    参数:
    输出格式:纯文本;
    添加:将视频上传者在视频说明部分(视频下方(2018 youtube布局)下方)发布的文本写入单独的Write .description文件。与视频文件保存在同一文件夹中。

  • --write-thumbnail将可用的最高分辨率缩略图(称为maxresdefault.jpgyoutube)写入.jpg文件。根据使用指定的模板重命名--output。与视频文件保存在同一目录中。
    参数:
    输出格式:仅JPEG;
    注:使用youtube-dl --list-thumbnails '<video_url>'调查一个特定的视频的缩略图提供(不上的播放列表的链接不工作); 例如:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotations将视频注释写入.annotations.xml文件。根据使用指定的模板重命名--output。与视频文件保存在同一目录中。
    参数:
    输出格式: .xml;

  • --all-subs写入所有自定义创建可用字幕的视频,以他们各自的文件(例如:subtitles.en.vttsubtitles.fr.vttsubtitles.es.vtt
    参数:
    输出格式:默认.vtt; 可以用--sub-format
    错误消息指定其他格式 如果没有可用的字幕,则警告消息将打印到标准输出-格式:WARNING: video doesn't have subtitles

有用的命令:

注:使用youtube-dl --list-subs '<video_url>'调查一个特定的视频的缩略图提供(不上的播放列表的链接不工作);
例如:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    参数:字符串:格式扩展名ass,srt或best
    输出格式:默认.vtt; 或根据规范
    添加:将字幕写成指定的文件格式(例如:).srt。与视频文件保存在同一文件夹中。
    省略:字幕将写为.vtt
    错误消息:如果没有可用的字幕,则将INFO消息打印为stdout-格式:[ffmpeg] There aren't any subtitles to convert
    注意:下载后,转换将作为.vtt文件的后处理步骤执行。如果ytdl执行意外终止,则某些字幕文件可能不会转换(在这种情况下,再次执行命令)。

  • --add-metadata
    参数:
    行为:将元数据写入视频输出文件。
    注意:不需要由.info.json生成--write-info-json

  • --embed-subs
    参数:
    行为:
    1.将字幕写入视频输出文件;
    2.仅针对MP4,WEBM和MKV影片
    错误消息: 如果没有可用的字幕一个INFO消息将被打印到stdout -格式:[ffmpeg] There aren't any subtitles to embed
    注意:并不需要.vtt所产生--write-sub--write-auto-sub--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    行为:用于创建一个文本文件,其中包含以前下载的视频的链接。下载整个频道时,可以跳过这些视频。仅下载单个视频时不需要。
    参数: String:视频档案路径的组合,以频道命名的目录。文件名由带有.ytdlarchive文件扩展名的通道名称组成。(也可以是.txt;但采用独特的格式可以轻松区分)
    输出格式:纯文本;每行一个videoID
    添加:
    1. ytdl读取此文件,忽略并跳过其中包含其videoID的所有视频,即使尚未下载也是如此。 如果存在视频文件和元数据文件,则ytdl将再次下载它们。
    2.自动将最后下载的视频的videoID添加到此文件中

  • --format ''
    参数:推荐字符串:bestvideo+bestaudio/best以确保最高的视频和音频质量组合。
    另外:完全控制视频质量和音频质量及其组合以及后备质量
    省略:默认youtube-dl will guess it for you by default- 文档
    注意:请参阅文档:格式选择示例

  • --merge-output-format '<video_format>'
    参数:视频文件格式。(例如:mp4,mkv,3gp等)
    添加:可以指定视频文件格式
    省略:默认youtube-dl will guess it for you by default文档
    注意:请参阅文档:格式选择

有用的命令:

注:使用youtube-dl --list-formats '<video_url>'调查提供的视频和音频质量和特定的视频格式(不上的播放列表的链接不工作);
例如:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    参数:
    1.视频文件格式。(例如:mp4,mkv,3gp等);
    2.推荐:%(upload_date)s_%(id)s_%(title)s.%(ext)s
    添加:影响视频文件和所有元数据文件的文件命名约定。
    省略:默认情况下,视频标题为文件名。默认模板:%(id)s.%(ext)s将输出ex .:testvideo.mkv
    注意:不要忘记%前缀和s后缀(也存在其他后缀)。_模板元素之间的thee 只是一个分隔符,可以是任何其他char。例如:%(upload_date)s-%(id)s
    注意:请参阅文档:输出模板

  • '<video_url>'
    参数:字符串:特定视频的URL
    错误消息:
    1.如果未提交任何视频URL,则ytdl将不会执行并显示帮助。
    2.如果提交的视频网址无效,则会将错误消息打印为标准输出-格式:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


存储建议:

  1. misc在您的视频档案中创建目录,并将所有单个视频存储在其中。

  2. 当您从某个频道下载一个或多个视频时,请为该频道创建一个专用目录。在这种情况下,通道名称为TED Archive,目录名称为TED_Archive(我抢先用下划线替换所有空格字符,以便在使用bash(或python)脚本时更轻松地进行目录导航和文件I / O操作)。


回复您的评论@leetbacoon

想知道,如果1440p可用,为什么1080p副本被认为是最好的呢?为什么显示2160p?该选项没有出现在我的末端(上限为1440p)– leetbacoon

来自文档
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

我认为,当您选择just best并指定一种输出格式时,youtube会发送该格式,它认为这是该格式的最佳视频和音频组合。这可能会受到某些YouTube内部平衡决策(推测)的影响。


根据我的使用经验,我必须专门指定bestvideo+bestaudio分别获得最高质量的视频和音频,然后将它们组合到.mkv容器中。


/best可以肯定的是,我将其用作后备参数。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.