Как объединить фото в видео python glob
Перейти к содержимому

Как объединить фото в видео python glob

  • автор:

Как объединить фото в видео python glob

Из песочницы, Работа с видео
Рекомендация: подборка платных и бесплатных курсов личностного роста — https://katalog-kursov.ru/

Введение

FFmpeg — мультимедийный комбайн, набор библиотек которые позволяют записывать, обрабатывать и конвертировать видео и/или аудио материалы в различные форматы. С помощью этого инструмента можно производить видео монтаж практически любой сложности. Его используют многие плееры, конвертеры, редакторы и библиотеки компьютерного зрения. В этой статье я поделюсь трюками и хитростями с FFmpeg, которые и сам часто использую в работе.

Обрезка видео по времени

Довольно часто нужно вырезать из видео небольшой фрагмент с n по m секунды. Для этого нужно указать секунду, с которой вырезать, и длительность.

ffmpeg -i i.mp4 -ss 00:01:00 -t 00:02:00 -c copy o.mp4

Параметр -ss указывает на начальную точку, а -t на длительность.

Важное замечание! Если длительность видео 5 минут, начальную точку укажем в 00:04:00, а длительность в 00:02:00, длительность конечного видео будет 1 минута.

Тут и далее по тексту статьи, i.mp4 — это путь к входному файлу, а o.mp4 — к выходному.

Создание видео из фотографий

Предположим, у нас есть камера наблюдения, которая делала фото каждую минуту в течение суток, а мы хотим получить одно непрерывное видео.

Используя код ниже, можно превратить все фото с расширением .jpg из текущей папки в видео, с кадровой частотой 10 FPS, используя H.264 кодек.

ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' -c:v libx264 o.mp4

Извлечение фотографий из видео

А теперь сделаем действие противоположное действию из предыдущего пункта — разобьем видео по кадрам на фотографии.

ffmpeg -i o.mp4 -r 1 -q:v 2 -f image2 img-3%d.jpeg

Склейка двух и больше видео в одно

Для склейки множества видео в одно нам потребуется создать файл, например list.txt, в котором по порядку перечислим пути к видео, которые хотим склеить, например:

file 'video1.mp4' file 'video2.mp4' file 'videoN.mp4'

А после этого выполним:

ffmpeg -f concat -i list.txt -c copy o.mp4

Создавать такой файл вручную не лучшая идея, можно его наполнить автоматически, например, так:

for f in ./*.mp4; do echo "file '$f'" >> list.txt; done
printf "file '%s'\n" ./*.mp4> list.txt

Удаление и извлечения аудио из видео

Для удаления используем:

ffmpeg -i i.mp4 -c:v copy -an o.mp4

А для извлечения:

ffmpeg -i i.mp4 -vn 0.wav

Обрезка видео по высоте и ширине

В начале статьи я рассказал о способе обрезки видео по времени, но его также можно обрезать и по размеру кадра, например превратить 16:9 формат в 3:4, обрезав кадр слева и справа.

ffmpeg -i i.mp4 -filter:v "crop=w:h:x:y" o.mp4

В фильтре crop по очереди нужно указать ширину, высоту нового кадра, а также его смещение по координатам.

Размещение видео рядом в одном кадре (stack video)

Перед тем, как мы это сделаем, есть пара моментов, которые нужно рассмотреть:

  • Видео должны иметь одинаковую высоту.
  • Видео должны иметь тот же формат пикселей.

Горизонтальное размещение:

ffmpeg -i i0.mp4 -i i1.mp4 -filter_complex hstack=inputs=2 o.mp4

Вертикальное размещение:

ffmpeg -i i0.mp4 -i i1.mp4 -filter_complex vstack=inputs=2 o.mp4

Сетка 2×2:

ffmpeg -i i0.mp4 -i i1.mp4 -i i2.mp4 -i i3.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[top]; [2:v][3:v]hstack=inputs=2[bottom]; [top][bottom]vstack=inputs=2[v]" -map "[v]" o.mp4

Сетка 3×2:

ffmpeg -i i0.mp4 -i i1.mp4 -i i2.mp4 -i i3.mp4 -i i4.mp4 -i i5.mp4 -filter_complex "[0:v][1:v][2:v]hstack=inputs=3[top];[3:v][4:v][5:v]hstack=inputs=3[bottom];[top][bottom]vstack=inputs=2[v]" -map "[v]" o.mp4

Поворот видео

ffmpeg -i i.mp4 -vf "transpose=0" o.mp4

Параметр transpose в коде выше может принимать такие значения:

  • 0 — Повернуть на 90 градусов против часовой стрелки и развернуть по вертикали. По умолчанию.
  • 1 — Повернуть на 90 градусов по часовой стрелке.
  • 2 — Повернуть на 90 градусов против часовой стрелки.
  • 3 — Повернуть на 90 градусов по часовой стрелке и развернуть по вертикали.

Послесловие

FFmpeg очень мощный инструмент для обработки видео. С его помощью, имея шпаргалку по его возможностям, можно сэкономить много времени — куда быстрее ввести несколько команд, чтобы обработать видео, чем запускать редактор.

Если вы знаете еще полезные хитрости и трюки — милости прошу поделиться ими в комментариях. Спасибо!

К сожалению, не доступен сервер mySQL

ffmpeg склеить тысячи фото в видео

доброго дня.
есть видео камера которая не пишет видео, а делает скриншоты и шлет их на уй фтп. фотографий за сутки получается вагон и тележка.
хочу с помощью ffmpeg склеить эти тысячи фотографий в видео. но не все так просто. у фоток есть дата когда они были сделаны, да еще и пишутся названия у них на русском, к примеру — Вход_в_ад_date_06.06.1999. я не понял как выбирать определенные фотографии и создавать из них видео.
на официальном сайте ffmpeg есть руководство — http://www.ffmpeg.org/faq.html#How-do-I-encode-single-pictures-into-movies_003f

ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg

но почему то во первых создается файл длинной 0 секунд, во вторых там 1 фотка. и еще вопрос, как создать видеофайл из фотографий N количества , длинной N часов? какое то ведь кол-во фотографий он будет за секунду показывать, а если фотографий у меня за 5 часов и он будет показывать 25 кадров в секунду, как там разобраться где что произошло.

bidjo
06.08.18 16:25:27 MSK

futurama ★★★★★
( 06.08.18 16:30:33 MSK )

aedeph_ ★★
( 06.08.18 16:41:22 MSK )
Ответ на: комментарий от futurama 06.08.18 16:30:33 MSK

bidjo
( 06.08.18 16:41:54 MSK ) автор топика

но почему то во первых создается файл длинной 0 секунд

Это командой просто кодируешь картинки в видеофайл с одним фреймом.

Для решения твоей проблемы нужно сорт оф слайдшоу, можешь почитать об этом здесь:

там есть хорошие примеры, вплоть до того, чтобы сортировать картинки через средствами bash, а не средствами ffmpeg.

hikoseuro
( 06.08.18 17:04:22 MSK )

я не понял как выбирать определенные фотографии и создавать из них видео.

Сгенерируй список файлов из которых хочешь видео создать: https://trac.ffmpeg.org/wiki/Concatenate
При генерации видео укажи нужный Framerate: https://trac.ffmpeg.org/wiki/Slideshow
Там можно установить показывать 1 кадр в секунду или 1 кадр каждые 5 секунд, выбирай любой framerate. Если использовать список файлов, то вообще можно для каждого изображения указывать длительность показа отдельно.

V1KT0P ★★
( 06.08.18 17:55:19 MSK )
Ответ на: комментарий от V1KT0P 06.08.18 17:55:19 MSK

спасибо большое за подсказки
проблема в именах файлов. примерное имя файлов такое — Лесной участок камера2_04-08-2018_22h01m03s582ms
оно может немного варьироваться, но по сути это много букаф и цифр в перемешку с русским и английским.
список файлов создавал через

(for %i in (*.jpg) do @echo file '%i') > mylist.txt

по началу получалась херь в хз каком формате.
через .bat

@echo off setlocal 1>nul chcp 1251 cd c:\1 (for %%i in (*.jpg) do @echo file '%%i') > mylist.txt 

стали создаваться нормальные имена. но

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output

все равно выдавал ошибку

Unsafe file name 'Болотная площадь 7 Подёлкой_04-08-2018_22h01m03s655ms.jpg'[br]mylist.txt: Operation not permitted

конечно если ему дать img1.jpg . img10.jpg то он работает. но у меня тысячи файлов другого наименования:)
glob pattern тоже не пашет.
на

ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' -c:v libx264 -pix_fmt yuv420p out.mp4
'*.jpg': Invalid argument

заработала следующая комманд лайна

ffmpeg -y -r 1/0.5 -f concat -safe 0 -i "C:\1\1.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "C:\1\out.mp4"

правда создает она жутко долго ,5 сек из 11 фотографий. Если я сожму десяток тысяч фоток, это займет 75 минут.

в идеале бы конвертировать фото с именным фильтром, например старт с

Болотная площадь 7 Подёлкой_10-08-2018_00h00m01s655ms.jpg
Болотная площадь 7 Подёлкой_10-08-2018_23h59m50s655ms.jpg

или на худой конец просто с указанием папки из которой надо брать файлы.
bidjo
( 06.08.18 21:20:05 MSK ) автор топика
Ответ на: комментарий от bidjo 06.08.18 21:20:05 MSK

по началу получалась херь в хз каком формате.
через .bat

А ты смотрел что там за список сгенерировался? Я вот в notepad создал список вручную используя имя «Болотная площадь 7 Подёлкой_04-08-2018_22h01m03s655ms.jpg» и ffmpeg его съел и не подавился. Можешь попробовать полные пути прописывать, у меня и с относительным путем все заработало. Про bat подсказать ничего не могу, если есть python то его лучше использовать, либо PowerShell накрайняк.
Вот так например можно без перекодировки в Mjpeg упаковать(у меня только в avi фреймрейт нормально работает при copy, для mkv 25fps врубает):

ffmpeg -f concat -safe 0 -r 1 -i list.txt -vcodec mjpeg -c copy -r 1 -framerate 1 output.avi

Если же с перекодировкой, то и в mkv нормально фреймрейт работает:

ffmpeg -f concat -safe 0 -r 1 -i list.txt -vcodec mjpeg -r 1 -framerate 1 output.mkv

С x264 также хорошо работает:

ffmpeg -f concat -safe 0 -r 1 -i list.txt -vcodec libx264 -r 1 -framerate 1 output.mkv

или на худой конец просто с указанием папки из которой надо брать файлы.

На линуксе у меня вот такая команда срабатывает:

ffmpeg -i %*.jpg -vcodec mjpeg -c copy -r 1 -framerate 1 output.avi

Можно конечно поэкспериментировать, но лучше всего передавать списком файлов, особенно на винде.

правда создает она жутко долго ,5 сек из 11 фотографий. Если я сожму десяток тысяч фоток, это займет 75 минут.

А ты почитай https://trac.ffmpeg.org/wiki/Encode/H.264 там есть пресеты типа fast. Если хочешь пережать jpeg файлы то да, libx264 сожмет очень хорошо и быстро если правильно параметры подобрать. Если же тебе просто объединить jpeg в один файл без перекодировки то используй mjpeg с «-c copy».

V1KT0P ★★
( 06.08.18 22:41:34 MSK )
Ответ на: комментарий от V1KT0P 06.08.18 22:41:34 MSK

без CHCP 1251 генерится вот так:

file 'Ѓ®«®в­ п Ї«®й ¤м 7 Џ®¤с«Є®©_04-08-2018_22h01m03s655ms.jpg'

почему я хз. все локали проверил, везде 1251 стоит. винда десятка.

ffmpeg -i %*.jpg -vcodec mjpeg -c copy -r 1 -framerate 1 output.avi 

ругается что нету в папке %*.jpg. делаю на винде. по всей видимости придется для облегчения процесса делать перекодировку на убунте.

из всех приведенных вариантов полностью корректно сработал

ffmpeg -f concat -safe 0 -r 1 -i list.txt -vcodec libx264 -r 1 -framerate 1 output.mkv

остальные работают по ощущениям раза в два три быстрее, но видео начинается с 2 кадра что ли. я брал 12 файлов, в видео было 11. первый кадр был просто черный.
и все таки наверно есть способ в винде указать папку целиком? тег паттерн глоб непашет:(

bidjo
( 07.08.18 09:39:06 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 09:39:06 MSK

ffmpeg -f concat -safe 0 -r 1/0.5 -i list.txt -b 96000 movie96000.avi

сжимает 9500 фоток за примерно 5-7 минут с ссд и i5-7400
но вот беда.

-b 96000

я думал этот параметр влияет на качество видео. на выходе видео весит всего 80 метров. и качество почти УГ. я менял с 9600 до 96000, файл стал больше на 1 метр но качество не изменилось. что я делаю не так?:)

bidjo
( 07.08.18 10:27:01 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 10:27:01 MSK

немогу редактировать сообщения. вот жопа печалька.

ffmpeg -f concat -safe 0 -r 2 -i list.txt -an -qscale 4 1.avi

дает результат по снижению веса и увеличению качества, но

qscale N

работает не понятно. Что на 1 что на 2 он не изменяет выходной размер. На 3 размер сокращается примерно на 40%. На 4 размер как при простом конвертировании в .avi
На выходе из 9500 картинов общим весом в 1.9ггб я получил avi весом почти в гиг. Качество норм. Но таки еще бы порезать его на 30% по обьему, было бы весьма не дурно.

deprecated pixel format used make sure you did set range correctly

что бы это означало.
bidjo
( 07.08.18 10:54:13 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 10:54:13 MSK

наврал. при склеивании 10 файлов нифига разницы не видно между qscale 3 и 4. при склеивании десяти тысяч фоток получилось вместо 0.99ггб 706мб. Так что круто круто:)

батник миниавтоматизации в папке

@echo off setlocal 1>nul chcp 1251 cd C:\1\g (for %%i in (*.jpg) do @echo file '%%i') > list.txt ffmpeg -f concat -safe 0 -r 2 -i list.txt -an -qscale 4 1.avi pause 

осталось дописать удаление фото-файлов которые были склеяны и назначить выходному avi файлу имя с какого по какой файл была сделана склейка, к примеру имя

Болотная площадь 7 Подёлкой_04-08-2018_22h01m03s655ms по Болотная площадь 7 Подёлкой_05-08-2018_22h01m03s655ms.jpg

bidjo
( 07.08.18 11:04:28 MSK ) автор топика

ну всё правильно, тебе поможет rm -rf ./*.jpg

а так конечно ты хочешь

for f in *.jpg; do jpegtran -optimize -copy none -perfect -v "$f" > "outputdir/$f"; done cd outputdir ffmpeg -framerate 30 -i img%03d.jpg -codec copy output.mkv 

anonymous
( 07.08.18 11:09:28 MSK )
anonymous
( 07.08.18 11:12:20 MSK )
Ответ на: комментарий от bidjo 07.08.18 10:27:01 MSK

ffmpeg -f concat -safe 0 -r 1/0.5 -i list.txt -b 96000 movie96000.avi

А что за кодек в этом случае используется?

я думал этот параметр влияет на качество видео. на выходе видео весит всего 80 метров. и качество почти УГ. я менял с 9600 до 96000, файл стал больше на 1 метр но качество не изменилось. что я делаю не так?:)

У меня одно время была задача кодирования в реальном времени с нормальным качеством, минимальным размером видео и минимальной нагрузке на процессор. Я брал референсные видео и запускал скрипт который перебирал все возможные параметры и замерял время кодирования и размер и составлял таблицу, libx264 лучший в плане оптимизаций.
Вот так примерно кодируется(параметры preset/crf/tune это чисто для libx264 кодера, хотя у других кодеков также могут быть такие параметры, но необязательно):

ffmpeg -f concat -safe 0 -r 1 -i list.txt -vcodec libx264 -preset medium -crf 31 -tune grain -r 1 -framerate 1 output.mkv 

«-preset» Параметр отвечает за скорость, ultrafast от veryslow по качеству при остальных настройках отличаться не должен, но вот размер файла у ultrafast будет большим но зато скорость кодирования будет молниеносная, у veryslow будет меньше размер файла, но кодировать будет дольше. Лучше начинай экспериментировать с medium, возможные параметры:
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
«-crf» Вот этот параметр отвечает за качество чем меньше значение тем лучше качество при значении «0» будет лучшее качество, при максимальном «51» будет худшее качество и возможно просто мешанина. Попробуй поэкспериментировать с стандартного «23». Диапазон 0-51.
«-tune» Это настройки под определенный тип видео, как-то анимация, видео или для стриминга с минимальной задержкой или для более быстрой декодировки. Этот параметр может положительно повлиять на уменьшения размера видео, но надо экспериментировать на референсном видео. Я бы советовал попробовать один из этих вариантов после того как подберешь preset и crf: film, animation, grain, stillimage.

V1KT0P ★★
( 07.08.18 11:12:38 MSK )
Ответ на: комментарий от bidjo 07.08.18 11:04:28 MSK

наврал. при склеивании 10 файлов нифига разницы не видно между qscale 3 и 4. при склеивании десяти тысяч фоток получилось вместо 0.99ггб 706мб. Так что круто круто:)

Лучше явно указывай libx264 будет лучше качество, меньше размер и быстрее, кстати можно ограничить кодирование только на 1 ядре: «-threads 1», но запускать сразу кодирование сразу для нескольких директорий, у меня есть мнение что эффективней запускать несколько однопоточных задач кодирования но я могу ошибаться. Вот так указывается сколько хочешь ядер при кодировании использовать:

ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset medium -crf 31 -tune grain -r 1 -framerate 1 output.mkv

Кстати порядок следования параметров иногда имеет значение, так что лучше их просто так не тасовать.
V1KT0P ★★
( 07.08.18 11:21:00 MSK )
Ответ на: комментарий от V1KT0P 07.08.18 11:21:00 MSK

спасибо.
батник создания avi и подчищения за собой

@echo off setlocal 1>nul chcp 1251 cd C:\3 (for %%i in (*.jpg) do @echo file '%%i') > list.txt ffmpeg -f concat -safe 0 -r 2 -i list.txt -an -qscale 8 1.avi call For /F "delims=" %%A In ('Dir "*.*" /A-D /B') Do (Echo %%~A)>>list.txt For /f "tokens=*" %%i in (list.txt) do attrib -a %%i attrib -a %0 del /aa /q /f *.* del list.txt exit 
ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 4 -vcodec libx264 -preset medium -crf 31 -tune grain -r 1 -framerate 1 output.mkv

при задействовании всех четырех ядер ну очень долго отрабатывает:( примерно в 3 раза медленнее. Качество на высоте, но mkv чет мой ЦПУ не осиливает или что. Вес файла сжался до 221 метра.

-qscale 6 или 7 или 8 

получаем 5-8 минут работы, и из входящих двух гигов фоток, получаем 500-300 мб видео.
Да и после конвертирования в mkv видео реально долго открывается.

bidjo
( 07.08.18 11:48:12 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 11:48:12 MSK

У тебя там первопень что ли? Можешь посмотреть что за дерьмо у тебя в контейнере напихано, что гадать-то. Mediainfo. В матрёшку упакуешь что угодно — нет ограничений, как у avi.

anonymous
( 07.08.18 12:01:40 MSK )

Одного меня смутило что под ёлкой на Болотной есть камера?

Deleted
( 07.08.18 12:12:29 MSK )
Ответ на: комментарий от bidjo 07.08.18 11:48:12 MSK

«-qscale» это параметр для MPEG-4, у libx264 аналог этого параметра «-qp 23» в твоем случае этот параметр даже лучше использовать вместо «-crf». «-qp» — ограничивает качество видео также от 0 до 51 не лимитируя размер, в то время как «-crf» ограничивает качество путем установки максимального размера видео, например в моем случае было критично чтоб небыло спонтанных увеличений размера видео, даже если это приведет к месиву на экране поэтому использовали «-crf».
Тебе же лучше подойдет параметр «-qp», он варьирует битрейт в зависимости от необходимости для поддержания нужного уровня качества.

Качество на высоте, но mkv чет мой ЦПУ не осиливает или что.

Это просто контейнер, libx264 можно в любой контейнер пихать: avi/mp4/mkv. Выбирай на любой вкус, ffmpeg выбирает контейнер по расширению выходного файла. Видео в libx264 можно без перекодировки в любой контейнер перепаковать, скорость этого действия равняется скорости копирования файла на диск.

Качество на высоте, но mkv чет мой ЦПУ не осиливает или что. Вес файла сжался до 221 метра.

Попробуй разные параметры скорости и качества, если качество на высоте то уменьши качество но увеличь скорость кодирования. Например вот такие настройки проверь, сравни качество, размер и скорость кодирования:

ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset veryfast -qp 30 -tune grain -r 1 -framerate 1 output-veryfast-30.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset veryfast -qp 35 -tune grain -r 1 -framerate 1 output-veryfast-35-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset veryfast -qp 40 -tune grain -r 1 -framerate 1 output-veryfast-40-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset veryfast -qp 45 -tune grain -r 1 -framerate 1 output-veryfast-45-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 30 -tune grain -r 1 -framerate 1 output-ultrafast-30-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 35 -tune grain -r 1 -framerate 1 output-ultrafast-35-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 40 -tune grain -r 1 -framerate 1 output-ultrafast-40-grain.avi ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 45 -tune grain -r 1 -framerate 1 output-ultrafast-45-grain.avi

V1KT0P ★★
( 07.08.18 14:04:33 MSK )
Ответ на: комментарий от anonymous 07.08.18 12:01:40 MSK

у меня i5-7400 и ссд. но фоток не 1 и даже не 10 000
и если я каждое видео буду генерить по 20 минут, я потрачу пол дня.

Полное имя : C:\1\1\output.mkv Формат : Matroska Версия формата : Version 4 / Version 2 Размер файла : 221 Мбайт Продолжительность : 1 ч. 17 м. Общий поток : 397 Кбит/сек Программа кодирования : Lavf58.17.101 Библиотека кодирования : Lavf58.17.101 ErrorDetectionType : Per level 1 

сжал то он круто, тока долго чето:)

bidjo
( 07.08.18 19:33:07 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 19:33:07 MSK

ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 45 -tune grain -r 1 -framerate 1 output-ultrafast-45-grain.avi

ульрафаст. но качество жуткое:) 500 мегов в 30 мегов сжал. картинки пикселями порядочно пошли.

ffmpeg -f concat -safe 0 -r 1 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 30 -tune grain -r 1 -framerate 1 output-ultrafast-30-grain.avi

наверно лучше подойдет. но чето не понял как в 1 сек загонять 2 или более картинки. фреймрейт менял на 2 и 3, все равно 1 картинка в секунду. как быть?

bidjo
( 07.08.18 21:19:32 MSK ) автор топика
Ответ на: комментарий от bidjo 07.08.18 21:19:32 MSK

больше 19-21 не ставь — качество говно будет

ультрафаст тоже не очень в принципе

если хочешь бесплатного кодирования, используй nvenc

anonymous
( 07.08.18 22:03:53 MSK )
Ответ на: комментарий от bidjo 07.08.18 21:19:32 MSK

наверно лучше подойдет. но чето не понял как в 1 сек загонять 2 или более картинки. фреймрейт менял на 2 и 3, все равно 1 картинка в секунду. как быть?

У меня работает заменяю все три значения(два параметра «-r» и один «-framerate»):

ffmpeg -f concat -safe 0 -r 2 -i list.txt -threads 1 -vcodec libx264 -preset ultrafast -qp 30 -tune grain -r 2 -framerate 2 output-2fps.avi

V1KT0P ★★
( 08.08.18 09:23:30 MSK )
Ответ на: комментарий от V1KT0P 08.08.18 09:23:30 MSK

всем спасибо за подсказки.
в выходные разгребу завал дел и напишу что в итоге получилось со скриптами автоматизации.
итоговый так сказать код:)

Как и чем можно в Python3 соединить два видео файла разного разрешения?

Добрый день. Есть скрипт который определяет разрешение видео и создает такого же разрешения видео из картинки, затем все скрепляет. Ситуация изменилась и теперь нужно скреплять уже готовые видео файлы, подгонять по разрешению в ручную это очень муторно, а попытки соединить видео разных разрешения дают на выходе несмотрибельный результат (все искажено и в шумах). Как это сделать в ручную знаю, но файлов много и хотелось бы поставить все на поток. Подскажите модули, а лучше с примером как решить эту задачу.

  • Вопрос задан более трёх лет назад
  • 968 просмотров

Комментировать

Решения вопроса 1

adugin

Andrey Dugin @adugin Куратор тега Python

Можно использовать библиотеку OpenCV:

import cv2 video1 = cv2.VideoCapture('video1.mp4') video1_width = video1.get(cv2.CAP_PROP_FRAME_WIDTH) video1_height = video1.get(cv2.CAP_PROP_FRAME_HEIGHT) video1_fps = video1.get(cv2.CAP_PROP_FPS) video2 = cv2.VideoCapture('video2.mp4') writer = cv2.VideoWriter('video3.mp4', cv2.VideoWriter_fourcc(*'MP4V'), video1_fps, (video1_width, video1_height)) writer.set(cv2.VIDEOWRITER_PROP_QUALITY, 100) while True: ret, frame = video2.read() if not ret: break frame = cv2.resize(frame, (video1_width, video1_height)) writer.write(frame) video1.release() video2.release() writer.release()

В примере пишутся только кадры из video2, приведённые к разрешению video1. Запись кадров video1 можете реализовать самостоятельно.

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Pathlib — манипуляция путями, создание и удаление папок и файлов

Pathlib на примерах Python 3

Модуль Pathlib в Python упрощает работу с файлами и папками. Он доступен в Python 3.4 и более поздних версиях. Pathlib сочетает в себе лучшее из модулей файловой системы Python — os, os.path, glob и так далее.

В Python большинство скриптов предполагает работу с файловыми системами. Следовательно, неизбежно взаимодействие с названиями файлов и путями. Именно для этого в Python есть модуль Pathlib, который содержит полезные функции для выполнения задач, связанных с файлами. Pathlib предоставляет удобный для чтения и простой способ создания путей, представляя пути файловой системы в виде надлежащих объектов. Модуль позволяет создавать код, который можно переносить между платформами.

В данной статье мы подробно изучим модуль Pathlib с помощью различных примеров.

Концепт пути и директории в Python

Перед началом подробного рассмотрения модуля Pathlib важно разобраться в разнице между главными концептами темы — путем (path) и директорией (directory).

  • Путь используется для идентификации файла. Путь предоставляет необязательную последовательность названий директорий, в конце которой значится конечное имя файла, а также его расширение;
  • Расширение названия файла предоставляет некоторую информацию о формате/содержимом файла. Модуль Pathlib может работать как с абсолютными, так и с относительными путями;
  • Абсолютный путь начинается с корневой директории и определяет полное дерево каталогов;
  • Относительный путь, как следует из названия, является путем к файлу относительно другого файла или директории, обычно текущей;
  • Директория представляет собой запись пути в файловой системе и включает название файла, время создания, размер, владельца и так далее.

Модуль Pathlib в Python занимается задачами, связанными с путями, такими как создание новых путей из названий файлов и других путей, проверка различных свойств путей, создание файлов и папок по определенным путям.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Добавить комментарий

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