从 YouTube 下载视频
最近计划学习钢琴,有网友建议去看 Andrew Furmanczyk 的 How to play piano
系列视频进行学习,由于原视频是在 YouTube 上且字幕是由 YouTube 自动生成的,为了方便观看,需要下载下来。实际操作中,发现想要达到预期的效果并不容易,有很多细节需要注意,故作此文记录。
- 下载工具
youtube-dl
- 代理配置
--proxy
- 下载自动生成的字幕文件
--write-auto-sub
- 字幕文件格式转换
下载下来的字幕文件格式为vtt
,为了便于播放器读取,需转换为srt
格式的文件ffmpeg -i input.vtt output.srt
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
默认情况下,youtube-dl 将下载最佳画质和音质的流,然后将这些流打包到兼容的容器中。如果最佳的流不能存在 mp4 容器中时,youtube-dl 则会将它们打包到 mkv 容器中,这时就会看到这条警告。如果一定要将这些流打包到 mp4 容器中,则需要手动指定格式-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]'
- 以上这些配置可以直接写入
~/.config/youtube-dl/config
--no-playlist --write-auto-sub --proxy "socks5://localhost:80" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' --user-agent 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
- 批量转换 vtt 文件
从 playlist 下载下来的会是多个 vtt 文件,可以使用 shell 脚本批量转换:#!/bin/bash for f in ./how_to_play_piano/*.vtt; do ffmpeg -i "$f" "${f%.vtt}".srt; done