前言

最近寒假了,在家给孩子找点英语的视频,学校教的大多是 Super Simple Songs 的内容,就想着把视频下载下来放到ipad里面让他平时在家自己看看。


注意:可以与下一篇文章 yt-dlp 一起阅读。

方法

在网上Google了一番,这边介绍2种我自己试过的方法:

第一种:使用在线下载平台

搜索 Youtube Downloader Online 这类的有很多类似网站,这边推荐一个 Youtube Video Downloader

第二种:使用本地工具youtube-dl

这边推荐 youtube-dl,这个方法的前提是你有一个能上youtube的网络环境,以及Ubuntu操作环境,其他操作环境,可以去官网或者Github找相对应的文档。

官网:http://ytdl-org.github.io/youtube-dl/

Github:https://github.com/ytdl-org/youtube-dl

环境配置

Ubuntu直接使用以下命令安排 youtube-dl 即可。

1
sudo apt install youtube-dl ffmpeg

操作步骤

获取目标地址音视频列表

1
2
youtube-dl -F [url]
youtube-dl --list-formats [url]

例如:

1
youtube-dl -F https://www.youtube.com/watch?v=c3v0rJqyCTM

返回结果如下:

第一列是格式的代号,第二列是文件格式,第三列是音频和视频分辨率等,第四列是视频/音频编码格式及文件大小等详情。

然后我们使用youtube-dl -F下载选中的格式的代号,例如

1
youtube-dl -F 249 https://www.youtube.com/watch?v=c3v0rJqyCTM  //要下载播放列表也是同样,会自动下载列表中所有视频

这样我们就可以直接下载音视频了,但是下载下来的为生肉,也就是没有字幕。

下载字幕

youtube-dl 是可以下载字幕的,命令为:

1
2
3
4
5
6
7
8
9
10
$ youtube-dl -h
... #直接跳到字幕部分
Subtitle Options:
--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
--sub-format FORMAT Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"
--sub-lang LANGS Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags
... #以下省略非字幕部分

可以看到,youtube-dl是支持字幕下载的,其中:

  • write-sub 下载up主自己上传的字幕(非youtube自动生成)
  • write-auto-sub 下载youtube自动生成的字幕
  • all-subs 下载所有字幕(有点夸张,可能用于采集吧)
  • list-subs 列出所有可以下载的字幕,包括语言以及格式
  • sub-format FORMAT 选择下载的字幕格式,如果没有你选定的格式,youtube会选择另外一个格式下载
  • sub-lang LANGS 选择下载字幕的语言

所以我们可以看见,本身youtube-dl的字幕下载功能就很强大。

只下载字幕的命令为:

1
2
3
youtube-dl --write-sub --skip-download [url]                //下载单独的 vtt 字幕文件,而不下载视频
youtube-dl --write-sub --all-subs --skip-download [url] //下载所有语言的字幕 (如果有的话)
youtube-dl --write-auto-sub --skip-download [url] //下载自动生成的字幕 (YouTube only)

下载并同时嵌入字幕

当然也可以一步到位,直接使用--write-sub下载,并使用--embed-subs嵌入:

1
youtube-dl --write-sub --embed-subs --sub-lang en_US,en-US,en https://www.youtube.com/watch?v=c3v0rJqyCTM

下载视频列表中的视频

使用参数 -cit [list url],如下:

1
youtube-dl -cit https://www.youtube.com/playlist?list=PLdkj6XH8GYPQW9uX_3JFR-2bFKz3VIjz9

其中PLdkj6XH8GYPQW9uX_3JFR-2bFKz3VIjz9便是视频列表的代码。

一般在YouTube中打开一个视频列表,网页会播放其默认index的视频,网址类似这样:

https://www.youtube.com/playlist?list=PLdkj6XH8GYPQW9uX_3JFR-2bFKz3VIjz9

其中?list=后面的PLdkj6XH8GYPQW9uX_3JFR-2bFKz3VIjz9即为视频列表代码。

如果想要下载的是正在更新的列表,可以使用--playlist-start --playlist-end参数指定开头和结尾,例如:

1
youtube-dl -f 299+140 -cit --playlist-start 3 https://www.youtube.com/playlist?list=PLdkj6XH8GYPQW9uX_3JFR-2bFKz3VIjz9

总结

如果你是个懒人,那么使用下面这条命令就足够了。

自动合并视频以及音频:

1
youtube-dl --write-sub --embed-subs --sub-lang en,zh-Hans https://www.youtube.com/watch?v=c3v0rJqyCTM