如何在网络不好的情况下通过命令行下载 YouTube 视频片段

如何在网络不好的情况下通过命令行下载 YouTube 视频片段

我想从 YouTube 流中下载某些部分,目前我正在使用此命令来完成这项工作:

yt-dlp --download-sections "*30:15-1:40:25" $LINK       

问题是,如果连接丢失几分钟,下载必须重新开始,我也知道这个命令:

youtube-dl --youtube-skip-dash-manifest -g "URL"

两个 url 输出保存到 python 中的 urls[] 中:

ffmpeg -y -ss "00:41:10" -i urls[0] -ss "00:41:10" -i urls[1] -map 0:v -map 1:a -ss 5 -t  "01:50:11" -c:v libx265 -c:a aac ../Clips/stream.mkv

如果连接丢失几分钟,也会丢失所有下载的内容

我无法下载整个流,因为它会花费很长时间,因此只需使用:

youtube-dl $LINK

或者

yt-dlp $LINK

尽管他们提供重新连接,但这不是一个选项

答案1

有一些(可以说)更好的 ffmpeg 命令/参数形式可以使用 - 尽管,不可否认的是,这仍然没有解决重新连接的问题。

来自 Reddit -如何下载直播的特定部分?

ffmpeg -ss 11:23:32 -to 12:25:00 -i $(yt-dlp -g https://youtube.com/watch?v=EXAMPLE) ./my-clip.mp4

视频教程:https://www.youtube.com/watch?v=aBtbsfPrkcc

...

在 Linux 上,您可以使用 at 命令、cron 或 systemd 计时器来安排命令。我确信有一种方法可以在 Windows 上安排命令,但我不知道如何做。

如果您传递-t hh:mm:ss而不是-to hh:mm:ssto ffmpeg,它将在指定的持续时间过去后停止,而不是从指定的时间戳开始。

总的来说,命令可能看起来像这样

echo 'ffmpeg -y -t 01:00:00 -i $(yt-dlp -g https://www.youtube.com/watch?v=6JUHxDBMAXE) clip.ts' | at 21:00

进一步说明:

Windows 曾经有一个命令行at.exe命令,但在新版本中它已被弃用。它已被替换schtasks.exe。它的 Windows GUI 是taskschd.msc

相关内容