如何下载 YouTube 视频的部分内容

如何下载 YouTube 视频的部分内容

我经常会遇到需要从中裁剪部分内容的 YouTube 视频,但这些视频可能很长,如果只下载一小部分视频就会花费太长时间并且非常浪费。

尽管存在youtube-dlGithub 上的问题自 2013 年起并且有一些但在这方面尚未取得任何进展,截至 2021 年,此功能仍然不可用。

还有什么其他解决方案可以仅下载我需要的视频部分?

答案1

经过几天的搜索,我迄今为止遇到的最佳解决方案是youtube-dl将 获取 YouTube 视频各个流的内部 URL 的能力与ffmpeg使用这些流作为输入的能力结合起来。


快速(Bash)方法

运行以下 Bash magic 以自动使用目标链接的视频和音频流的内部 YouTube URL填充video_url和变量:audio_url

# As scary as it looks, perfectly safe to run in a terminal 
{   
   read -r video_url  
   read -r audio_url
} < <(
   youtube-dl --get-url --youtube-skip-dash-manifest https://www.youtube.com/watch?v=MfnzBYV5fxs
)

最后,传递时间戳来下载您想要的视频部分:

# Download 2 minutes of the video between 5 mins in to 7 mins, using timestamps:
ffmpeg -ss 00:05:00.00 -to 00:07:00.00 -i "$video_url" -ss 00:05:00.00 -to 00:07:00.00 -i "$audio_url" output.mkv

或者如果您希望裁剪持续时间而不是两个时间戳之间的时间:

# Download 2 minutes of the video between 5 mins in to 7 mins, using duration:  
ffmpeg -ss 00:05:00.00 -i "$video_url" -ss 00:05:00.00 -i "$audio_url" -t 2:00 output.mkv

手动(非 Bash)方式

如果您使用除 Bash 之外的任何其他 shell,则必须以手动方式执行此操作:

运行以下命令将输出目标视频的视频和音频流的 YouTube(非常长的)内部 URL:

youtube-dl --get-url --youtube-skip-dash-manifest "https://www.youtube.com/watch?v=MfnzBYV5fxs"

将这些 URL 插入以下命令,并分别粘贴它们代替<video_url><audio_url>

# Download 2 minutes of the video between 5 mins in to 7 mins, using timestamps:
ffmpeg -ss 00:05:00.00 -to 00:07:00.00 -i <video_url> -ss 00:05:00.00 -to 00:07:00.00 -i <audio_url> output.mkv

或者如果您希望裁剪持续时间而不是两个时间戳之间的时间:

# Download 2 minutes of the video between 5 mins in to 7 mins, using duration:  
ffmpeg -ss 00:05:00.00 -i <video_url> -ss 00:05:00.00 -i <audio_url> -t 2:00 output.mkv

相关内容