Я пытаюсь выполнить партию из 3 видеороликов, чтобы оставить ее там до утренней обработки, но кажется, что в ней есть специальные символы ... Я пытаюсь сделать это «сырым» в терминале, и он работает, но в сценарии bash это перестает работать
Пример:
args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"
args12="-r 29.97 -ss 00:40:30 -vsync 0 -vpre libx264-medium -i"
args2="[in] scale=580:380 [T1],[T1] pad=720:530:0:50 (other arguments with lots of [ and ]"
На выходе он говорит
Невозможно найти подходящий формат вывода для 'scale = 580: 380' not sure почему ... как я уже сказал, команда отлично работает в командной строке, а не в скрипте
/usr/local/bin/ffmpeg "$args1" "${file}" -vf "$args2" "$args3" "${args[0]}_${startingfrom}_0001_02.mp4"
Возможно, вам стоит попытаться определить ваш args
таким образом:
args2 = '[in] scale = .....'
(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.
Не помещайте в переменную несколько аргументов, она будет работать для очень простых случаев, но в противном случае вы не получите ничего, кроме скорби. Вместо этого используйте массивы. Например:
infile = video.avi outfile = $ {infile%. *}. Mp4 # video.mp4 args = (-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264 -medium -vf "[in] scale = 580: 380 [T1], [T1] pad = 720: 530: 0: 50") # ... ffmpeg -i "$ infile" "$ {args [@]} "$ outfile"
(Кавычки важны)
В этом случае, возможно, вам понадобится функция. Трудно сказать, так как ваш вопрос немного расплывчатый.
См. [D0] BashFAQ 50