如何通过youtube-dl自定义下载音视频的文件名与存储路径?
解决youtube-dl自定义文件名与指定保存路径的问题
核心配置:outtmpl参数
youtube-dl 通过 ydl_opts 中的 outtmpl 项,可同时实现指定保存文件夹和自定义文件名的需求,支持固定路径/名称,也支持调用视频元数据占位符。
1. 固定路径+自定义文件名
如果需要将文件保存到指定文件夹(比如 ./my_downloads/),并使用固定名称命名,可按如下配置:
def downloadVideos(videoURL): ydl_opts = { 'format': 'bestvideo,bestaudio', # 保存到my_downloads文件夹,文件名为custom_video,自动匹配扩展名 'outtmpl': './my_downloads/custom_video.%(ext)s', } with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download([videoURL])
其中 %(ext)s 是内置占位符,会自动替换为文件实际扩展名(如 mp4、m4a),避免手动写死后缀。
2. 利用视频元数据命名
如果想根据视频自身信息(标题、上传者等)命名,youtube-dl 提供了多种内置占位符,常用的包括:
%(title)s:视频标题%(uploader)s:视频上传者名称%(id)s:视频ID%(ext)s:文件扩展名
示例(保存到指定文件夹,用「标题+ID」命名):
def downloadVideos(videoURL): ydl_opts = { 'format': 'bestvideo,bestaudio', 'outtmpl': './saved_videos/%(title)s-%(id)s.%(ext)s', } with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download([videoURL])
3. 可选:合并视频与音频文件
若不想分开下载视频和音频,可调整配置实现自动合并:
def downloadVideos(videoURL): ydl_opts = { # 优先下载最佳视频+音频并合并,无合并源则下载最佳单文件 'format': 'bestvideo+bestaudio/best', # 指定合并后文件格式为mp4 'merge_output_format': 'mp4', 'outtmpl': './merged_videos/%(title)s.%(ext)s', } with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download([videoURL])
此配置会生成一个合并后的完整视频文件,文件名符合自定义规则。
注意事项
- 指定的目标文件夹若不存在,youtube-dl 会自动创建,无需手动操作。
- 更多可用的元数据占位符,可通过执行
youtube-dl --help查看完整列表。
内容的提问来源于stack exchange,提问作者U. Watt
相关产品推荐
相关产品推荐

