Главная > Linux > Скачать youtube видео и разбить его по кадрам в jpeg

Скачать youtube видео и разбить его по кадрам в jpeg

22.12.2015 2 комментария » Просмотры: 3 398

Split movie

Потребовалось мне вытянуть кадр из Youtube видео, остановка плеера и скриншот меня не устроили из-за качества, поэтому я решил выкачать видео, сделать его раскадровку и найти нужный кадр в хорошем качестве. Делать будем это в Linux..

Как всегда разобьем задачу на части:

  • установить нужный софт
  • скачать видео в максимальном разрешении
  • разбить видео на части

Теперь пойдем по порядку.

Для всех этих действий, нам потребуется следующий софт:

  • youtube-dl
  • avconv
  • ffmpeg

Сперва ставим свежий youtube-dl, согласно инструкции: youtube-dl installation

Теперь ставим avconv и ffmpeg:

Всё, весь нужный софт установлен.

Теперь давайте разберемся как качать видео в максимальном разрешении. В качестве, примера возьмем клип Оли Поляковой, "Первое лето без него":

Открываем консоль, создаем какую-нибудь папку, переходим в неё и выполняем:

В ответ получаем такую инфу:

Теперь из всего этого разнообразия форматов, выбираем наилучшее видео и наилучший звук, запоминаем номера указанные в столбце "format". У нас это 137 для видео и 251 для звука.

Теперь, качаем видео такой командой:

Для того чтобы склеить два формата, youtube-dl использует avconv именно для этого мы его и ставили.

В результате в нашей папке создаться файл с именем: Оля Полякова - Первое лето без Него (ПРЕМЬЕРА!)-RaZlsPDVPxg.mkv

Теперь давайте его разобьем по кадрам, для этого создаем еще одну папку output, в которую у нас будут записаны изображения и используем команду имеющую такой формат:

т.е. в нашем случае это будет

В результате, после выполнения команды, в папке output появится 9500 изображений, из которых вы и можете выбрать нужный кадр, например такой:

Кадр из клипа Оли Поляковой

Кадр из клипа Оли Поляковой

На сегодня, это всё :]

--[добавлено 28.07.18]--

Формат команды, чтобы вытащить скриншот из определенной позиции видео

тут:
-ss = метка времени, формат hh:mm:ss[.xxx]
-i = путь к видеофайлу
-vframes = захват только одного видеофрейма
-q:v 2 = качество изображения (от 1 до 31, оптимально 2-5)
output.jpg = получаемое изображение

 

Формат команды, чтобы сделать gif-ку из видео:

то же самое но с оптимизацией слоёв гифки:

тут:
-ss = метка времени с которой произойдет старт, формат hh:mm:ss[.xxx]
-i = путь к видеофайлу
-t 5 = кол-во секунд видео для обработки
-vframes 50 = кол-во видеофреймов для обработки (кол-во изображений в гифке, по-умолчанию это "-t 5" * "-r 10" = 50)
-vf scale=800:-1 = размер изображения
-r 10 = fps , остальные кадры будут удалены
-q:v 2 = качество изображения (от 1 до 31, оптимально 2-5)
-f image2pipe = отправка не в файл, а в pipe для дальнейшей обработки
-vcodec ppm = видео кодек
-delay = задержка между кадрами видео (если уменьшить параметр -r/2 и увеличить -delay*2 то можно в тот же размер гифки записать в два раза больше времени видео, т.е. -t*2), пример ниже

Подробнее про опции можно почитать тут

Автор: | Рейтинг: 4/5 | Теги: , , , ,

2 комментария

Написать свой
  1. Maxsim Ответить
    04.03.2016 в 9:00 дп
    Спасибо, познавательно.! ) ))

Добавить комментарий для Maxsim Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Разрешены HTML-теги: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>


Ниже приводятся ссылки на блоги ссылающиеся на этот пост:
  1. Pingback от FFmpeg: Как разбить видео на картинки с определенным промежутком времени 25.01.2020