Как передать переменную Bash в поле наложения временного кода в фильтре отрисовки текста ffmpeg?

466
Derker

Поэтому я пытаюсь создать действие папки в Automator, которое будет принимать любой файл mp4, сброшенный в него, и накладывать его ... "timecode" (на самом деле это просто начальная ссылка для временного кода, который я хочу наложить, который был вставляется в заголовок файла так:

00/58/47; 02-test.mp4

с 00/58/47; 02 - начальная ссылка временного кода, которую я хочу передать в поле временного кода фильтра drawtext для наложения на новый видеофайл.

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

Я думаю, что это как-то связано с тем, как переменная $ TC расширяется или не расширяется в команде ffmpeg. Будем весьма благодарны за любые мысли или советы о том, как правильно передать начальную ссылочную переменную временного кода в поле временного кода наложения в виде текста.

вот где я нахожусь

 for f in "$@" do FILENAME=$(basename "$f")  #grab TC start reference from Filename DTC=$  # create variables for first string replace MATCH='/' REPL='\\:'  # Replace "/" with "\\:" CTC="$"  # create variables for second string replace MATCH2=';' REPL2='\\;'  # Replace ";" with "\\;" FTC="$"  #put formatted timecode in a variable TC="$FTC"  /usr/local/bin/ffmpeg -i "$f" -vf \ "format=yuv444p, \   #### This $ Variable doesn't work... if I type out a timecode ie.  #### '00\:58\:47\;02' within the single quotes it works fine drawtext=fontfile=/Library/Fonts/Arial.ttf :timecode='$' \  :rate=30000/1001 :x=(w-tw)/2: y=(h-th)/2: fontcolor=white: fontsize=36: \ box=1: boxcolor=0x00000099, \ format=yuv420p" \ -c:v libx264 -r 30000/1001 \ -x264opts "keyint=180:min-keyint=180:no-scenecut" \ -c:a copy -movflags +faststart  "/Users/Station1/Desktop/TCDONE/$.mp4" mv "$f" "/Users/Station-1/Desktop/TCOG/$.mp4" done 

Будем весьма благодарны за любые решения или объяснения о том, как правильно передать переменную $ TC в поле наложения временного кода фильтра drawtext. Спасибо за прочтение!

0
Какая на самом деле ошибка? Вы убедились, что `$ ` на самом деле обеспечивает то, что вы хотите? Показать эхо этой переменной. LordNeckbeard 7 лет назад 0
@LordNeckbeard Ну в некотором роде, в командной строке я смог пройти через процесс замены и вывести «$ » и получить то, что я хочу = 00 \: 58 \: 47 \; 02 или что я думаю, что я хочу, чтобы переменная вошла в `timecode = '$ '`, но только после того, как я добавил двойную обратную косую черту в мои замены строк. Который я сейчас отредактирую выше. Но это все еще не работает как действие папки. Derker 7 лет назад 0

0 ответов на вопрос