Загрузите часть видео с Youtube с помощью Youtube-dl и FFmpeg
Несмотря на то, что существует множество программ для загрузки и кодирования видео, я предпочитаю использовать Youtube-dl и FFmpeg. Этих двух утилит достаточно для загрузки видео из Интернета, а также кодирования, декодирования, транскодирования, обрезки и мультиплексирования загруженных видео. Сегодня мы увидим, как загрузить часть видео с YouTube с помощью Youtube-dl и FFmpeg в Linux.
Прежде чем я узнаю этот совет, я обычно сначала загружаю все видео с помощью Youtube-dl, а затем сокращаю его до желаемой продолжительности с помощью FFmpeg, как показано ниже.
Чтобы скачать видео, я бы сделал:
youtube-dl <youtube-link>
А затем обрежьте загруженное видео, используя время начала и окончания видеоклипа, как мне нравится, с помощью FFmpeg, используя команду:
ffmpeg -i input_video.mp4 -ss 00:01:00 -to 00:03:00 -c copy output_video.mp4
Это то, что я делал, чтобы получить только часть видео. Если вы все еще используете этот метод для загрузки и обрезки видео, не беспокойтесь. Я знаю немного лучший способ загрузки частей видео с YouTube вместо полного видео. Читай дальше!
Загрузите часть видео с Youtube с помощью Youtube-dl и FFmpeg.
Сначала мы увидим, как загрузить определенную часть видео с YouTube с помощью скрипта Youtube-dl.
Для целей данного руководства я буду использовать это видео с официального канала YouTube для нашего блога OSTechNix. Это видео длится 2:43 минуты и в основном демонстрирует, как запускать веб-браузеры в полноэкранном режиме в Linux.
Если вы еще не установили Youtube-dl на свой компьютер с Linux, воспользуйтесь ссылками, прикрепленными в первом абзаце.
В Youtube-dl есть параметр --postprocessor-args
для загрузки определенной части видео YouTube или видео с нескольких других веб-сайтов.
Чтобы загрузить часть видео с помощью Youtube-dl, запустите:
youtube-dl --postprocessor-args "-ss 00:01:00 -to 00:02:00" "https://www.youtube.com/watch?v=dc7I-i7sPrg"
Здесь --ss 00:01:00
— время начала видео, а -to 00:02:00
— время окончания. Таким образом, приведенная выше команда начнет кодирование через 1 минуту и закончится через 2 минуты.
Вы также можете использовать флаг -t
, чтобы указать общую продолжительность.
youtube-dl --postprocessor-args "-ss 00:01:00 -t 00:00:50" "https://www.youtube.com/watch?v=dc7I-i7sPrg"
Кодирование начнется через 1 минуту и займет только следующие 50 секунд.
Обратите внимание, что Youtube-dl загружает видео целиком перед его обработкой. После обрезки видео до заданной длины исходное видео будет удалено и останется только часть видео. Если вы хотите сохранить оба, просто передайте флаг -k
.
Если вы хотите загружать не все видео, а только его часть, вы можете объединить ffmpeg и youtube-dl, чтобы загрузить определенную часть видео с YouTube, как показано ниже:
youtube-dl --external-downloader ffmpeg --external-downloader-args "-ss 00:01:00.00 -to 00:02:00.00" -f best "https://www.youtube.com/watch?v=dc7I-i7sPrg"
Здесь мы использовали флаг -f best
для загрузки аудио и видео наилучшего качества.
Приведенная выше команда загрузит данное видео с Youtube с помощью сценария Youtube-dl, а затем обрежет его, начиная с 1 минуты и заканчивая 2 минутой.
Вот еще одна версия команды, выполняющая ту же работу.
ffmpeg -ss 00:01:00 -to 00:02:00 -i "$(youtube-dl -f best --get-url 'https://www.youtube.com/watch?v=dc7I-i7sPrg')" -c:v copy -c:a copy kiosk.mp4
Эта команда делает то же самое, что и предыдущая, но сохраняет выходное видео как «kiosk.mp4».
Обновление:
Как прокомментировал ниже один из наших читателей, если приведенный выше совет по какой-либо причине не работает, просто добавьте десятичное число после секунд, например "-ss 00:01:00.00 -to 00:02: 00.00
" вместо "-ss 00:01:00 -to 00:02:00
". Хотя лично я это не проверял. Однако читатель утверждает, что это действительно работает.
Надеюсь это поможет.
Ссылка
Избранное изображение: kapil 99 из Pixabay.