Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Видео и аудио: обработка и кодирование (http://forum.oszone.net/forumdisplay.php?f=45)
-   -   FFmpeg - Из нескольких фотографий видеоролик с музыкой, текстами, эффектами (http://forum.oszone.net/showthread.php?t=318687)

Dahlum 11-09-2016 22:14 2667719

FFmpeg - Из нескольких фотографий видеоролик с музыкой, текстами, эффектами
 
Ищу специалиста по FFmpeg

Ваше потраченное время будет c благодарностью вознаграждено.
Писать на eMail: dahlum@mail.ru

lxa85 11-09-2016 22:20 2667720

Dahlum, "Специалист по FFmpeg" это звучит широко :)
Раскройте пожалуйста задачку пошире, чтобы друзьям и товарищам больше подробностей в личку отдать.

Dahlum 11-09-2016 23:20 2667726

Вот что делаю. Из нескольких фотографий сделать видеоролик с музыкой и текстом.
Эту часть я уже сделал. Теперь надо сделать повеселее - с различными видеоэффектами.
Отсюда 1-й вопрос : Какие из эффектов что в списке ниже, можно реализовать с помощью FFmpeg?
Appear/Disappear я так полагаю это можно и уже сделано в первой части - поставил + ,
а вот можно ли сделать остальные?


Fotos:
01 + Appear/Disappear
02 ? Ken Burns effect in/out
03 ? Fade in/out
04 ? Crossfade
05 ? Rotate in/out
06 ? Zoom in/out
07 ? Scroll in/out from top, bottom, left, right
08 ? Curtain open/close vertical, horizontal
09 ? Furl/unfurl
10 ? Increase/decrease centered, radial
11 ? Spindle left, right
12 ? Pixelate in/out


Music:
13 + Start/stop
14 ? Fade in/out
15 ? Crossfade

Text:
16 + Appear/Disappear
17 ? Ken Burns effect in/out
18 ? Fade in/out
19 ? Crossfade
20 ? Rotate in/out
21 ? Zoom in/out
22 ? Scroll in/out from top, bottom, left, right
23 ? Curtain open/close vertical, horizontal
24 ? Furl/unfurl
25 ? Increase/decrease centered, radial
26 ? Spindle left, right
27 ? Pixelate in/out
28 ? Star Wars opener in/out

DJ Mogarych 12-09-2016 21:31 2668010

Dahlum, вот документация по FFMpeg, фильтров там невероятное количество:
https://ffmpeg.org/ffmpeg-filters.html

bredych 08-06-2017 14:06 2742920

напоролся на какую-то глупейшую ошибку.
склеиваю серию картинок в видео, синтаксис примитивнейший -

ffmpeg -start_number 1068 -framerate 10 -i DSC_%04d.jpg video.mp4

- в результате ффмпег вместо того, чтоб согласно синтаксису подставлять вместо регекспа 4 цифры начиная с указанного старта, подставляет имя батника и собщает, что дескать, картинки с именем DSC_[имя_батника.bat].jpg не существует

Что я делаю не так?

Amigos 08-06-2017 15:24 2742942

Цитата:

Цитата bredych
Что я делаю не так? »

пишите батники, не пройдя урок батаники https://rsdn.org/article/winshell/batanyca.xml

Цитата:

Цитата bredych
ffmpeg -start_number 1068 -framerate 10 -i DSC_%04d.jpg video.mp4 »

Цитата:

Прежде всего, вспоминаем, что переменная %0 в bat-файле соответствует нулевому аргументу командной строки, т.е. имени самого файла.

bredych 08-06-2017 17:16 2742973

Увы, батаникой занимался очень фрагментарно и давно

Делал по гайду, вывалившемуся с гугла первым:
https://en.wikibooks.org/wiki/FFMPEG...image_sequence

В других
https://stackoverflow.com/questions/...eo-from-images
http://hamelot.io/visualization/usin...-into-a-video/
- тоже в качестве регекспа указывается строка %03d

как тогда синтаксис "бери 4-значный номер начиная от стартового" описать?

кстати, мануал по ффмпегу описывает точно такой же синтаксис.
[начало_имени]%03.jpg как цепочку файлов "начало_имени"+ три цифры.jpg

Если просто %d (типа число без предшествующих нолей) - то знак % игнрирует вовсе, и заявляет, что нет файла пр имени DSC_d.jpg

Busla 08-06-2017 19:25 2743017

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

если это одноразовая задача - просто наберите это в консоли
если сложная - стоит написать скрипт на чём-то более вменяемом, хотя бы jscript или powershell

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

bredych 09-06-2017 00:08 2743050

собсно уже подсказали. Решение было на поверхности, но я почему-то думал, что здесь не сработает:
Знак процентов заскринивается вторым им же. Тогда параметр %04d передаётся ффмпегу, а не обрабатывается согласно бат-синтаксису как переменная %0 ака имя исполняемого файла.

зы, если б умел писать на чем-то вменяемом - писал бы :)

meZon 16-06-2017 09:55 2745073

bredych, широко известный в узких кругах Kisa_AG на iXBT делился своим скриптом, в котором создавался промежуточный текстовый - BAT файл, - с нужным синтаксисом ffmpeg, , AviSynth, кодера neaacenc, муксера mp4box... <остальное забыл по-старости>
Просмотрите его в качестве примера "в чём разница".
У разных программ свои тараканы, а для выше упомянутых - больших тараканов. Не всегда очевидное в BAT файле, очевидно для программы, вызываемой оттуда.

bredych 17-12-2017 02:04 2784838

пытаюсь склеить несколько отрезков с фейдин эффектом. Пользуюсь скриптом от https://video.stackexchange.com/ques...ack-in-between
Правда слегка допиленным,
Код:

ffmpeg -i pol.mp4 -i fol.mp4 -i pol.mp4 -i fol.mp4  -filter_complex  "[0:v] fade=t=in:st=0:d=1, fade=t=out:st=3:d=1 [0v]; [0:a] afade=t=in:st=0:d=1, afade=t=out:st=3:d=1 [0a]; [1:v] fade=t=in:st=0:d=1, fade=t=out:st=55:d=1 [1v]; [1:a] afade=t=in:st=0:d=1, afade=t=out:st=55:d=1 [1a]; [2:v] fade=t=in:st=0:d=1, fade=t=out:st=3:d=1 [2v]; [2:a] afade=t=in:st=0:d=1, afade=t=out:st=3:d=1 [2a]; [3:v] fade=t=in:st=0:d=1, fade=t=out:st=55:d=1 [3v];  [3:a] afade=t=in:st=0:d=1, afade=t=out:st=55:d=1 [3a]; [0:v] [0:a] [1v] [1a] [2:v] [2:a] [3v] [3a] concat=n=4:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac test.mp4
и то, как тестовый прогон, на 2 файлах пробую..
В итоге получаю отлуп:
Код:

Output pad "default" with type video of the filter instance "Parsed_fade_1" of fade not connected to any destination
гугл мне ничего не желает сообщать на тему того, что это значит.
В самом коде дефолтов тоже не вижу, и не понимаю, чего даже копать.

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

DJ Mogarych 17-12-2017 19:19 2785015

bredych, пробуйте минимум команд сначала, и два файла.

Вот обсуждение похожей проблемы: https://trac.ffmpeg.org/ticket/5072

Запрос в Гугл: https://www.google.ru/search?q=ffmpe...ny+destination

bredych 04-03-2020 17:45 2912005

вопрос возник насчет версий.
Использовал до сих пор на старой машине
ffmpeg-20190711-2601eef-win32-static

поставил на новой мощной (под вин10/64) -
ffmpeg-20200227-9и22254-win64-static

итог - то, что на старой кодировалось где-то минут 40 и выдало в результате 345МВ ролик,
на новой кодировалось почти сутки и выдало 15ГВ ролик, который к тому же не играло.

Код - тот же самый, примитивно склейка нескольких фрагментов в 1280*720, набор файлов тот же самый, запустил на обеих чисто для опыта - сравнить скорость.

Скрытый текст
ffmpeg -i 00.mp4 -i 01.mp4 -i 02.mp4 -i 03.mp4 -i 04.mp4 -i 05.mp4 -i 07.mp4 -i 08.mp4 -i 09.mp4 -i 10.mp4 -i 11.mp4 -i 12.mp4 -i 13.mp4 -i 14.mp4 -i 15.mp4 -i 16.mp4 -i 17.mp4 -i 18.mp4 -i 19.mp4 -i 20.mp4 -i 21.mp4 -i 22.mp4 -i 23.mp4 -i 24.mp4 -i 25.mp4 -i 26.mp4 -i 27.mp4 -i 28.mp4 -i 29.mp4 -i 30.mp4 -i 31.mp4 -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=30:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4


собсно вопрос: это версия глючная? Или есть какие-то нюансы в командах в зависимости от разрядности?

DJ Mogarych 06-03-2020 19:45 2912259

Попробуйте через файл - https://trac.ffmpeg.org/wiki/Concatenate

bredych 08-03-2020 01:16 2912362

Цитата:

Цитата DJ Mogarych
Попробуйте через файл »

так я код и так в батнике отдаю. Просто удивило,что внезапно реакция непонятная.
Кстати, сменил найти билд на статик 4.2.2 - и поведение сменилось на ожидаемое, создало ролик примерно сходного качества и размера, за примерно впятеро меньшее время, чем на старой.

bredych 11-08-2021 15:42 2964048

Частая проблема при склейке - несовпадение sar.
пишет. что sar фрагмента к примеру 5 (4185:4186) не совпадает с sar фрагмента 0

Отдельно перекодируя через -vf "setsar=sar=1/1,setdar=dar=16/9" - всё отлично. Но это лишняя перекодировка, что отражается на качестве.
А вместе с ресайзом - -vf "scale=-1:720:force_original_aspect_ratio=1,setsar=sar=1/1,setdar=dar=16/9, и т.д. - этот сар меняет, но на очередное непредсказуемое значение. Не 1/1

Собсно вопрос:
Как убедить в пределах одной перекодировки нормально выставлять 1/1?

DJ Mogarych 12-08-2021 09:04 2964074

Пишут, что можно игнорить, но тогда есть риск получить растянутые или сплюснутые рожи, а ещё вариант использовать фильтр pad.

bredych 15-08-2021 03:08 2964249

Цитата:

Цитата DJ Mogarych
а ещё вариант использовать фильтр pad. »

если речь о таком -
Код:

A more generic command that will work for all input file aspect ratios will use force_original_aspect_ratio=1 as an option to scale:

ffmpeg -i input -vf "scale=w=1280:h=720:force_original_aspect_ratio=1,pad=1280:720

- то это я делал.
Форс ориджинал сохраняет оригинальные сары, которые не совпадают от слова совсем.
Пад - это просто добавление краев под размер.
Вся та строка - это стандартные параметры, используемые мной. И это никак не отменяет проблему различных сар-ов.

bredych 02-02-2022 01:45 2979150

где-то еще имел сохраненный скрипт восстановления sar в положение 1:1 - что-то типа sar=iw:ih или что-то в этом роде.. Но затер при переустановке линя и теперь не помню.
Может кто напомнит?

что-то в стиле этого -
Код:

ffmpeg -i udp://localhost:1234  -vf "scale=iw*sar:ih:eval=frame,setsar=1,pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2:eval=frame" -aspect 16:9  -update 1 img.jpg
но сильно кратче.

bredych 02-02-2022 02:34 2979152

сам нашел

-vf "setsar=sar=1/1,setdar=dar=16/9"

Еще есть варианты
Код:

ffmpeg -i file.mp4 -vf "scale=iw*sar:ih , pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2" -aspect 16:9 file.mp4
ffmpeg -i test.mp4 -vf scale=w=iw:h=ih/SAR a.mp4
-vf scale=1280:720:flags=bicubic,setsar=1:1

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


Время: 18:10.

Время: 18:10.
© OSzone.net 2001-