Как скачать разделы из видео с YouTube из командной строки при плохом интернете
Я хочу загрузить определенные разделы из потока YouTube. В настоящее время я использую эту команду для выполнения этой работы:
yt-dlp --download-sections "*30:15-1:40:25" $LINK
проблема в том, что если соединение потеряно всего на несколько минут, то загрузку приходится начинать заново, я тоже знаю такую команду:
youtube-dl --youtube-skip-dash-manifest -g "URL"
Два вывода URL сохраняются в urls[] в Python и:
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 command, cron или systemd. Я уверен, что есть способ запланировать выполнение команды в Windows, но я не знаю, как это сделать.
Если ты пройдешь
-t hh:mm:ss
вместо-to hh:mm:ss
к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 для негоtaskschd.msc