如何获取yt-dlp下载视频后的文件名?
获取yt-dlp下载后的视频文件名方法
以下是几种可靠的方案,帮你拿到yt-dlp生成的视频文件名,方便后续调用ffmpeg剪辑:
1. 用--print参数提前获取文件名
这是最直接的方法,yt-dlp支持通过--print参数输出指定字段,你可以先获取将要生成的文件名,再执行下载:
# 先获取文件名并保存到变量 output_filename=$(yt-dlp --print filename "你的视频URL") # 执行下载 yt-dlp "你的视频URL" # 后续直接用$output_filename调用ffmpeg ffmpeg -i "$output_filename" -ss 00:01:00 -to 00:02:00 "clipped_video.mp4"
如果担心下载时文件名有变化(比如重复文件自动重命名),可以在下载时指定同样的命名模板,或者加上--no-overwrites避免自动改名。
2. 自定义固定输出文件名
直接用-o参数指定一个固定文件名,完全避免猜测:
# 指定下载后的文件名 yt-dlp -o "my_video.mp4" "你的视频URL" # 直接用这个固定文件名调用ffmpeg ffmpeg -i "my_video.mp4" ...
你也可以用变量动态生成带信息的文件名,比如包含视频标题:-o "%(title)s.mp4",这样既保留标题信息,又能提前明确命名规则。
3. 从yt-dlp输出中提取文件名
如果不想修改原有下载命令,可以从yt-dlp的标准输出里匹配提取目标文件名:
# 执行下载并提取文件名到变量 output_filename=$(yt-dlp "你的视频URL" 2>&1 | grep -oP '\[download\] Destination: \K.*') # 之后使用该文件名调用ffmpeg ffmpeg -i "$output_filename" ...
这个命令通过正则匹配下载完成时输出的[download] Destination: 文件名行,直接提取出文件名部分。
4. 编程场景(以Python为例)
如果是在Python脚本中调用yt-dlp,可以直接用其API获取文件名:
from yt_dlp import YoutubeDL import subprocess def download_and_get_filename(video_url): ydl_opts = {} with YoutubeDL(ydl_opts) as ydl: # 先获取视频信息,不下载 info = ydl.extract_info(video_url, download=False) # 生成将要保存的文件名 filename = ydl.prepare_filename(info) # 执行下载 ydl.download([video_url]) return filename # 使用示例 video_url = "你的视频URL" video_file = download_and_get_filename(video_url) # 调用ffmpeg剪辑 subprocess.run(["ffmpeg", "-i", video_file, "-ss", "00:01:00", "-to", "00:02:00", "output.mp4"])
内容的提问来源于stack exchange,提问作者LT_Orange
相关产品推荐
相关产品推荐

