进阶功能
字幕下载
下载、嵌入和转换字幕
查看可用字幕
# 列出所有可用字幕
yt-dlp --list-subs "URL"import yt_dlp
with yt_dlp.YoutubeDL({'skip_download': True}) as ydl:
info = ydl.extract_info("URL", download=False)
subs = info.get('subtitles', {})
auto_subs = info.get('automatic_captions', {})
print("手动字幕:")
for lang, formats in subs.items():
print(f" {lang}: {[f['ext'] for f in formats]}")
print("自动生成字幕:")
for lang in list(auto_subs.keys())[:5]:
print(f" {lang}")Available subtitles for BV1xx411c7mD:
Language Formats
zh-Hans vtt, srt, ass
en vtt, srt, ass
Available automatic captions:
Language Formats
zh-Hans vtt, json3
en vtt, json3
ja vtt, json3下载字幕文件
# 下载中文字幕
yt-dlp --write-sub --sub-lang "zh-Hans" "URL"
# 下载多种语言
yt-dlp --write-sub --sub-lang "zh-Hans,en,ja" "URL"
# 下载所有可用字幕
yt-dlp --all-subs "URL"
# 包含自动生成的字幕
yt-dlp --write-auto-sub --sub-lang "zh-Hans" "URL"
# 指定字幕格式
yt-dlp --write-sub --sub-lang "zh-Hans" --sub-format srt "URL"
# 只下载字幕(不下载视频)
yt-dlp --skip-download --write-sub --sub-lang "zh-Hans" "URL"import yt_dlp
ydl_opts = {
'writesubtitles': True, # 下载手动字幕
'writeautomaticsub': True, # 下载自动生成字幕
'subtitleslangs': ['zh-Hans', 'en'], # 语言列表
'subtitlesformat': 'srt', # 字幕格式
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])嵌入字幕到视频
# 下载并嵌入字幕
yt-dlp --write-sub --sub-lang "zh-Hans,en" --embed-subs "URL"
# 合并为 mp4 并嵌入字幕
yt-dlp --write-sub --sub-lang "zh-Hans" --embed-subs \
--merge-output-format mp4 "URL"import yt_dlp
ydl_opts = {
'writesubtitles': True,
'subtitleslangs': ['zh-Hans', 'en'],
'merge_output_format': 'mp4',
'postprocessors': [
{'key': 'EmbedSubtitle'},
],
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])嵌入字幕后,字幕成为视频文件的一部分。大多数播放器(VLC、PotPlayer、mpv)都支持切换嵌入字幕的语言。
字幕格式转换
# 转换字幕格式为 srt
yt-dlp --write-sub --sub-format srt --convert-subs srt "URL"
# 转换为 ass(高级字幕格式,支持样式)
yt-dlp --write-sub --convert-subs ass "URL"常用语言代码
| 代码 | 语言 |
|---|---|
zh-Hans | 简体中文 |
zh-Hant | 繁体中文 |
en | 英语 |
ja | 日语 |
ko | 韩语 |
es | 西班牙语 |
fr | 法语 |
de | 德语 |