LINUX.ORG.RU

Как сделать выбор в зависимости от числа слов в списке?

 


0

1

В Makefile мне нужно написать конструкцию, которая выдаёт одно значение, если в текстовом списке 3 имени файла и другое, если 2.

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

 -filter_complex \
  '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a] ' \
-map '[v]' -map '[a]' $@
А для двух:
 -filter_complex \
  '[0:0] [0:1] [1:0] [1:1]  concat=n=2:v=1:a=1 [v] [a] ' \
-map '[v]' -map '[a]' $@

★★★★★

Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Стопудово оно:

make FILES="one.mkv two.mkv"
there is 2 files

make FILES="one.mkv two.mkv three.mkv"
there is 3 files

Eddy_Em ☆☆☆☆☆
()

Можно ещё так:

SHELL = /bin/bash

...
	set $^; ... -filter_complex "$$(eval "echo \[{0..$$#}:{0,1}\]") concat=n=$$#:v=1:a=1 [v] [a] " -map '[v]' -map '[a]' $@

или так со стандартным шеллом (проверено на dash):

	set $^; ... -filter_complex "$$(i=0; while test $$i -le $$#; do echo -n "[$$i:0] [$$i:1] "; i=$$((i+1)); done) concat=n=$$#:v=1:a=1 [v] [a] " -map '[v]' -map '[a]' $@

Jini ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.