Zodiac Wang
  • Home
  • Categories
  • Tags
  • Archives

使用youtube-dl下载YouTube等网站视频


一款非常好用的基于命令行的Youtube视频下载工具

Table of Contents

  • 1  获取目标地址音视频列表
  • 2  按指定代码组合下载
  • 3  字幕
    • 3.1  只下载字幕
    • 3.2  将下载的字幕与视频进行合并
      • 3.2.1  硬字幕
      • 3.2.2  软字幕
    • 3.3  下载并同时嵌入字幕
  • 4  使用 aria2 多线程下载
  • 5  下载视频列表中的视频
  • 6  其他参数
  • 7  注意事项

系统要求

  • youtube-dl
  • ffmpeg 下载的音视频需要利用 ffmpeg 进行合并(youtube-dl 会自动调用)
sudo apt install youtube-dl ffmpeg

获取目标地址音视频列表¶

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

例如

youtube-dl -F https://www.youtube.com/watch?v=pl1kcv780cY
[youtube] pl1kcv780cY: Downloading webpage
[youtube] pl1kcv780cY: Downloading video info webpage
[info] Available formats for pl1kcv780cY:
format code  extension  resolution note
249          webm       audio only DASH audio   63k , opus @ 50k, 1.21MiB
250          webm       audio only DASH audio   81k , opus @ 70k, 1.58MiB
140          m4a        audio only DASH audio  127k , m4a_dash container, mp4a.40.2@128k, 3.00MiB
171          webm       audio only DASH audio  137k , vorbis@128k, 2.91MiB
251          webm       audio only DASH audio  152k , opus @160k, 3.09MiB
278          webm       256x144    144p   97k , webm container, vp9, 24fps, video only, 2.11MiB
160          mp4        256x144    144p  112k , avc1.4d400c, 24fps, video only, 1.70MiB
242          webm       426x240    240p  225k , vp9, 24fps, video only, 4.36MiB
133          mp4        426x240    240p  248k , avc1.4d4015, 24fps, video only, 3.35MiB
243          webm       640x360    360p  406k , vp9, 24fps, video only, 7.97MiB
134          mp4        640x360    360p  637k , avc1.4d401e, 24fps, video only, 8.99MiB
244          webm       854x480    480p  760k , vp9, 24fps, video only, 14.19MiB
135          mp4        854x480    480p 1181k , avc1.4d401e, 24fps, video only, 17.83MiB
247          webm       1280x720   720p 1518k , vp9, 24fps, video only, 28.22MiB
136          mp4        1280x720   720p 2363k , avc1.4d401f, 24fps, video only, 33.14MiB
248          webm       1920x1080  1080p 2700k , vp9, 24fps, video only, 50.37MiB
137          mp4        1920x1080  1080p 4397k , avc1.640028, 24fps, video only, 59.62MiB
271          webm       2560x1440  1440p 8920k , vp9, 24fps, video only, 142.21MiB
313          webm       3840x2160  2160p 17971k , vp9, 24fps, video only, 351.16MiB
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k, 1.82MiB
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2, 5.10MiB
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k, 14.80MiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 20.43MiB
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

按指定代码组合下载¶

youtube-dl -f [format code] [url]

例如

youtube-dl -f 136+140 https://www.youtube.com/watch?v=8VkpDCD6fms

youtube-dl 会自动调用FFMPEG合并音频和视频[如果可以的话]

字幕¶

只下载字幕¶

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)

将下载的字幕与视频进行合并¶

  • 硬字幕(字幕为画面一部分)
  • 软字幕(可选择打开关闭字幕)

硬字幕¶

先将 vtt 字幕转换为 ass 字幕

ffmpeg -i subtitle.vtt subtitle.ass

合并字幕和视频

ffmpeg -i video.mp4 -vf ass=subtitle.ass out.mp4

软字幕¶

ffmpeg -i video.mp4 -i subtitle.vtt -c copy -c:s mov_text out.mp4

下载并同时嵌入字幕¶

使用--write-sub下载,并使用--embed-subs嵌入

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

一些选项:

  • --sub-lang 字幕语言
  • --all-subs 下载所有字幕
  • --list-subs 列出所有的字幕

如果需要下载并同时嵌入自动生成的字幕,使用--write-auto-sub

youtube-dl --write-auto-sub --embed-subs -f https://www.youtube.com/watch?v=6wy1CP-mM08

参考: https://forum.manjaro.org/t/how-to-download-a-video-from-youtube-with-captions-solved/81046/6

使用 aria2 多线程下载¶

有时下载速度不理想,可以考虑利用多线程加速下载

安装

sudo apt-get install aria2

多线程下载

youtube-dl [url] --external-downloader aria2c --external-downloader-args "-x 16 -k 1M"

参数说明

--external-downloader aria2c //调用外部下载工具
--external-downloader-args //外部下载工具指定参数
-x 16 //启用aria2 16个线程,最多就支持16线程
-K 1M //指定块的大小

实测在VPS上效果并不好,没有直接使用youtube-dl速度块,可能本地下载使用aria2会有提升,抑或是VPS上的aria2没有设置DHT文件

下载视频列表中的视频¶

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

youtube-dl -cit https://www.youtube.com/playlist\?list\=PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW

其中PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW便是视频列表的代码

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

https://www.youtube.com/watch?v=G3A7q8ASsO0&list=PLPZ7h6L6LC7V_aSrf9EPFJlXZOQRv22pb

其中&list=后面的PLPZ7h6L6LC7V_aSrf9EPFJlXZOQRv22pb即为视频列表代码

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

youtube-dl -f 299+140 -cit --playlist-start 3 https://www.youtube.com/playlist\?list\=PLPZ7h6L6LC7UvH8KfJnP95p099QO_jvxI

其他参数¶

  • -o 指定目标文件路径
  • --proxy 指定代理
  • e 获取目标视频标题
youtube-dl -o [PATH] --proxy [PROXY] [url]
youtube-dl -e [url]

例如

youtube-dl -f 136+140 -o ~/usr/download.mp4 -- proxy 127.0.0.1:8087 https://www.youtube.com/watch?v=8VkpDCD6fms

注意事项¶

使用 pip 安装FFMPEG 后还需要下载编译包并将bin等路径添加到 PATH中[windows 环境下] Linux 环境下使用 apt-get安装即可


  • « Jupyter Notebook内的Plotly绘图
  • VPS搭建ShadowSocks服务实现科学上网[ipv6 enabled] »

Published

10 10, 2018

Category

posts

Tags

  • miscellaneous 5

Contact

  • Zodiac Wang - A Fantastic Learner
  • Powered by Pelican. Theme: Elegant