我想从 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:ss
toffmpeg
,它将在指定的持续时间过去后停止,而不是从指定的时间戳开始。总的来说,命令可能看起来像这样
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