Понимание / контроль слайд-шоу расплава MLT? - PullRequest
0 голосов
/ 18 января 2019

Рассмотрим следующий скрипт bash (в Ubuntu 18.04, melt 6.6.0), который использует melt для создания слайд-шоу и локального воспроизведения его в окне (потребитель SDL), в основном скопированный из https://mltframework.org/blog/making_nice_slideshows/ (edit: я знаю, что возможно указывать файлы индивидуально, как в https://superuser.com/questions/833232/create-video-with-5-images-with-fadein-out-effect-in-ffmpeg/834035#834035 - но этот подход, кажется, масштабирует изображения во время перехода и требует много времени для «рендеринга» перед воспроизведением в окне SDL, в то время как у этого есть почти мгновенное воспроизведение):

echo "
description=DV PAL
frame_rate_num=25
frame_rate_den=1
width=720
height=576
progressive=0
sample_aspect_num=59
sample_aspect_den=54
display_aspect_num=4
display_aspect_den=3
colorspace=601
" > my-melt.profile

mkdir tmppics
convert -background lightblue -fill blue -size 3840x2160  -pointsize 200  -gravity center label:"Test A" tmppics/pic_01.jpg
convert -background lightblue -fill blue -size 3840x2160  -pointsize 200  -gravity center label:"Test B" tmppics/pic_02.jpg

melt -verbose -profile ./my-melt.profile \
./tmppics/.all.jpg ttl=6 \
-attach crop center=1 \
-filter luma cycle=6 duration=4 \
-consumer sdl
  • Когда я запускаю вышеупомянутую команду, видео показывает цикл двух изображений, но счетчик кадров продолжает работать, увеличиваясь бесконечно. Как сделать так, чтобы он останавливался после точного количества кадров, в течение которых цикл длинный?
  • Насколько я вижу, размер выходного видео контролируется профилем; то есть, даже если я не укажу -profile, предполагается значение по умолчанию; это правильно?
  • Исходные изображения выглядят так:

pic01_eog

... и видео выглядит так:

pic01_melt

... что означает неправильное соотношение сторон; Кроме того, я вижу неровные края, что означает, что масштабированное изображение в видео не сглажено.

Как настроить изображение по размеру видео с правильным соотношением сторон, сглаживанием / сглаживанием? (Я думаю, это связано с -attach crop center=1, но я не смог найти документацию по этому вопросу).

  • При просмотре материалов в SDL и пошаговом просмотре кадров, нумеруются ли кадры с нуля, или они основаны на 1, а в кадре 0 отображается просто тот же кадр, что и 1?

  • Если я использую ttl=6 и -filter luma cycle=6 duration=4, я получаю это:

melt01-opt.gif

... то есть видимый переход начинается в кадре 7 (кадр 6 - полное изображение A), длится для кадров 7 и 8 и заканчивается в кадре 9 (который является полным изображением B); затем снова в кадрах 13 и 14 (кадр 15 - полное изображение A)

Однако, если я использую ttl=6 и -filter luma cycle=6 duration=2, то получаю это:

melt02-opt.gif

... то есть перехода нет, изображение мгновенно изменяется в кадре 7, затем снова в кадре 13 и т. Д.

Итак, в первом случае я бы назвал длительность перехода 2 кадра, а во втором случае - продолжительность 0 кадров - но варианты бывают duration=4 и duration=2 соответственно. Кто-нибудь может объяснить почему? Куда делись эти 2 кадра?

  • Могу ли я - и если да, то как - сделать то же самое слайд-шоу, кроме с переходом в черный цвет? Я хотел бы определить «время жизни» (ttl) из 6 кадров на изображение и переход из 4 кадров, например:

    • сначала показаны 4 кадра изображения A;
    • затем одно изображение кадра A исчезло, затем один кадр черного цвета (составляющий 6 кадров TTL для изображения A, последние 2 перехода);
    • затем два кадра изображения B исчезли (на 4 кадра переходят с предыдущими 2), за которыми следуют еще два кадра изображения B (так что здесь 4 кадра изображения B);
    • затем одно изображение кадра B исчезло, затем один кадр черного цвета (составляющий 6 кадров TTL для изображения B);

... и т. Д.

  • Можно ли убедить melt использовать сглаживание для выбора изображений для слайд-шоу вместо .all.jpg? Насколько я могу видеть на MLT (Media Lovin 'Toolkit) Фото слайд-видео нет - но, возможно, есть другой подход ...

1 Ответ

0 голосов
/ 19 февраля 2019

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

Вам нужно использовать -serialise <name of file>.melt, в котором будут храниться ваши команды (, вы также можете создать этот файл вручную ). Затем, чтобы выполнить этот файл, используйте melt <name of file>.melt вместе с любыми другими опциями, которые у вас есть для вашего видеофайла.

Пример формата:

melt <images and what to do to them> -serialise <name of file>.melt


Пример


Создание файла расплава (с помощью Melt CLI)

melt image1.png out=50 image2.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image4.png out=75 -mix 25 -mixer luma <...> -serialise test.melt


. Формат файла .melt

test.melt

image1.png out=50 image2.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image4.png out=75 -mix 25 -mixer luma <...>


Run

melt test.melt -profile atsc_1080p_60 -consumer avformat:output.mp4 vcodec=libx264 an=1


Дополнительные примечания

В конце файла расплава должен быть дополнительный символ возврата. Если нет, Exceeded maximum line length (2048) while reading a melt file. будет выведено

Обратите внимание, что -serialise <name of file>.melt не будет в файле .melt

Melt фактически потребуется некоторое время для загрузки файла расплава, прежде чем начнется процесс кодирования

...