Как избежать этого в сценарии bash?

Я пытаюсь выполнить партию из 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"
0
задан 23 April 2011 в 09:27

32 ответа

Возможно, вам стоит попытаться определить ваш args таким образом:

args2='[in] scale= .....'

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 25 July 2018 в 22:10

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

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"

(Важны кавычки)

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

См. BashFAQ 50

5
ответ дан 25 July 2018 в 22:10

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 25 July 2018 в 22:10

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы фактически не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"

Правильно. Но строка ffmpeg должна выглядеть примерно так:

/usr/local/bin/ffmpeg $args1 "${file}" -vf $args2 $args3 "${args[0]}_${startingfrom}_0001_02.mp4"

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

0: /usr/local/bin/ffmpeg 1: -r 2: 29.97 3: -t ...

Когда вы приводите переменную содержащие аргументы, все они отправляются как один такой аргумент:

0: /usr/local/bin/ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите играйте с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

#!/bin/bash echo "0: $0" i=1 for argument in "$@"; do echo "${i}: $argument" ((i++)) done
1
ответ дан 25 July 2018 в 22:10
  • 1
    Проблема начинается с этой строки, в частности, args2="\"[in] scale=580:380 [T1],[T1] pad=720:530:0:50\"" Я попытался использовать обратную косую черту, несколько вещей, ничего не работает, аргументы находятся внутри сценария bash, а не снаружи :( действительно хлопотно, я также добавил строку ffmpeg, которую вы ее отредактировали, работа – allenskd 23 April 2011 в 21:01

Возможно, вам стоит попытаться определить ваш args таким образом:

args2='[in] scale= .....'

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 26 July 2018 в 19:22

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

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"

(Важны кавычки)

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

См. BashFAQ 50

5
ответ дан 26 July 2018 в 19:22

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 26 July 2018 в 19:22

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы фактически не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"

Правильно. Но строка ffmpeg должна выглядеть примерно так:

/usr/local/bin/ffmpeg $args1 "${file}" -vf $args2 $args3 "${args[0]}_${startingfrom}_0001_02.mp4"

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

0: /usr/local/bin/ffmpeg 1: -r 2: 29.97 3: -t ...

Когда вы приводите переменную содержащие аргументы, все они отправляются как один такой аргумент:

0: /usr/local/bin/ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите играйте с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

#!/bin/bash echo "0: $0" i=1 for argument in "$@"; do echo "${i}: $argument" ((i++)) done
1
ответ дан 26 July 2018 в 19:22
  • 1
    Проблема начинается с этой строки, в частности, args2="\"[in] scale=580:380 [T1],[T1] pad=720:530:0:50\"" Я попытался использовать обратную косую черту, несколько вещей, ничего не работает, аргументы находятся внутри сценария bash, а не снаружи :( действительно хлопотно, я также добавил строку ffmpeg, которую вы ее отредактировали, работа – allenskd 23 April 2011 в 21:01

Возможно, вам стоит попытаться определить ваш args таким образом:

args2='[in] scale= .....'

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 2 August 2018 в 03:39

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

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"

(Важны кавычки)

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

См. BashFAQ 50

5
ответ дан 2 August 2018 в 03:39

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 2 August 2018 в 03:39

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы фактически не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"

Правильно. Но строка ffmpeg должна выглядеть примерно так:

/usr/local/bin/ffmpeg $args1 "${file}" -vf $args2 $args3 "${args[0]}_${startingfrom}_0001_02.mp4"

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

0: /usr/local/bin/ffmpeg 1: -r 2: 29.97 3: -t ...

Когда вы приводите переменную содержащие аргументы, все они отправляются как один такой аргумент:

0: /usr/local/bin/ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите играйте с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

#!/bin/bash echo "0: $0" i=1 for argument in "$@"; do echo "${i}: $argument" ((i++)) done
1
ответ дан 2 August 2018 в 03:39
  • 1
    Проблема начинается с этой строки, в частности, args2="\"[in] scale=580:380 [T1],[T1] pad=720:530:0:50\"" Я попытался использовать обратную косую черту, несколько вещей, ничего не работает, аргументы находятся внутри сценария bash, а не снаружи :( действительно хлопотно, я также добавил строку ffmpeg, которую вы ее отредактировали, работа – allenskd 23 April 2011 в 21:01

Возможно, вам стоит попытаться определить ваш args таким образом:

args2='[in] scale= .....'

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 4 August 2018 в 19:41

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

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"

(Важны кавычки)

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

См. BashFAQ 50

5
ответ дан 4 August 2018 в 19:41

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 4 August 2018 в 19:41

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы фактически не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"

Правильно. Но строка ffmpeg должна выглядеть примерно так:

/usr/local/bin/ffmpeg $args1 "${file}" -vf $args2 $args3 "${args[0]}_${startingfrom}_0001_02.mp4"

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

0: /usr/local/bin/ffmpeg 1: -r 2: 29.97 3: -t ...

Когда вы приводите переменную содержащие аргументы, все они отправляются как один такой аргумент:

0: /usr/local/bin/ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите играйте с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

#!/bin/bash echo "0: $0" i=1 for argument in "$@"; do echo "${i}: $argument" ((i++)) done
1
ответ дан 4 August 2018 в 19:41
  • 1
    Проблема начинается с этой строки, в частности, args2="\"[in] scale=580:380 [T1],[T1] pad=720:530:0:50\"" Я попытался использовать обратную косую черту, несколько вещей, ничего не работает, аргументы находятся внутри сценария bash, а не снаружи :( действительно хлопотно, я также добавил строку ffmpeg, которую вы ее отредактировали, работа – allenskd 23 April 2011 в 21:01

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы на самом деле не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

  args1 = "- r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium  -i " 

Правильно. Но строка ffmpeg должна выглядеть примерно так:

  / usr / local / bin / ffmpeg $ args1 "$ {file}" -vf $ args2 $ args3 "$ {args [0]}  _ $ {startfrom} _0001_02.mp4 " 

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

  0: / usr /  local / bin / ffmpeg 1: -r 2: 29.97 3: -t ...  

Когда вы приводите переменную, содержащую аргументы, все они отправляются в виде одного аргумента, подобного этому:

  0: / usr / local / bin / ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...  [  ! d16] 

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите поиграть с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

  #!  / bin / bash echo "0: $ 0" i = 1 для аргумента в "$ @";  do echo "$ {i}: $ argument" ((i ++)) done  
1
ответ дан 6 August 2018 в 03:47

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 6 August 2018 в 03:47

Не помещайте в переменную несколько аргументов, она будет работать для очень простых случаев, но в противном случае вы не получите ничего, кроме скорби. Вместо этого используйте массивы. Например:

  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

5
ответ дан 6 August 2018 в 03:47

Возможно, вам стоит попытаться определить ваш args таким образом:

  args2 = '[in] scale = .....'  

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 6 August 2018 в 03:47

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 7 August 2018 в 21:42

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы на самом деле не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

  args1 = "- r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium  -i " 

Правильно. Но строка ffmpeg должна выглядеть примерно так:

  / usr / local / bin / ffmpeg $ args1 "$ {file}" -vf $ args2 $ args3 "$ {args [0]}  _ $ {startfrom} _0001_02.mp4 " 

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

  0: / usr /  local / bin / ffmpeg 1: -r 2: 29.97 3: -t ...  

Когда вы приводите переменную, содержащую аргументы, все они отправляются в виде одного аргумента, подобного этому:

  0: / usr / local / bin / ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...  [  ! d16] 

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите поиграть с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

  #!  / bin / bash echo "0: $ 0" i = 1 для аргумента в "$ @";  do echo "$ {i}: $ argument" ((i ++)) done  
1
ответ дан 7 August 2018 в 21:42

Не помещайте в переменную несколько аргументов, она будет работать для очень простых случаев, но в противном случае вы не получите ничего, кроме скорби. Вместо этого используйте массивы. Например:

  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

5
ответ дан 7 August 2018 в 21:42

Возможно, вам стоит попытаться определить ваш args таким образом:

  args2 = '[in] scale = .....'  

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 7 August 2018 в 21:42

Возможно, вам стоит попытаться определить ваш args таким образом:

  args2 = '[in] scale = .....'  

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 10 August 2018 в 09:55

Не помещайте в переменную несколько аргументов, она будет работать для очень простых случаев, но в противном случае вы не получите ничего, кроме скорби. Вместо этого используйте массивы. Например:

  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

5
ответ дан 10 August 2018 в 09:55

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 10 August 2018 в 09:55

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы на самом деле не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

  args1 = "- r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium  -i " 

Правильно. Но строка ffmpeg должна выглядеть примерно так:

  / usr / local / bin / ffmpeg $ args1 "$ {file}" -vf $ args2 $ args3 "$ {args [0]}  _ $ {startfrom} _0001_02.mp4 " 

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

  0: / usr /  local / bin / ffmpeg 1: -r 2: 29.97 3: -t ...  

Когда вы приводите переменную, содержащую аргументы, все они отправляются в виде одного аргумента, подобного этому:

  0: / usr / local / bin / ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...  [  ! d16] 

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите поиграть с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

  #!  / bin / bash echo "0: $ 0" i = 1 для аргумента в "$ @";  do echo "$ {i}: $ argument" ((i ++)) done  
1
ответ дан 10 August 2018 в 09:55

Похоже, что $ args1 и $ args12 содержат несколько опций, но $ args2 выглядит как одно значение для опции -vf. Поэтому вам следует опустить кавычки из $ args1 и $ args12, чтобы они были подвержены разбиению слов, но продолжайте цитировать $ args2.

Однако сообщение об ошибке, которое вы сообщаете «Невозможно найти подходящий формат вывода для 'scale = 580: 380' 'похоже, что он исходит из ffmpeg, а не оболочки.

0
ответ дан 13 August 2018 в 16:14

В этом случае, когда вы хотите передать $ argsN в ffmpeg как несколько аргументов, вы на самом деле не хотите его процитировать. Чтобы быть ясным, вы хотите указать строку, в которой вы ее устанавливаете, поэтому:

  args1 = "- r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium  -i " 

Правильно. Но строка ffmpeg должна выглядеть примерно так:

  / usr / local / bin / ffmpeg $ args1 "$ {file}" -vf $ args2 $ args3 "$ {args [0]}  _ $ {startfrom} _0001_02.mp4 " 

Проблема заключается в том, что ffmpeg ожидает массив таких аргументов:

  0: / usr /  local / bin / ffmpeg 1: -r 2: 29.97 3: -t ...  

Когда вы приводите переменную, содержащую аргументы, все они отправляются в виде одного аргумента, подобного этому:

  0: / usr / local / bin / ffmpeg 1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i ...  [  ! d16] 

Так как ffmpeg не имеет единственной опции, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i он по праву жалуется.

Если вы хотите поиграть с возможностью увидеть, как именно передаются ваши аргументы, вы можете использовать этот простой сценарий оболочки, который печатает каждый переданный ему аргумент в отдельной строке:

  #!  / bin / bash echo "0: $ 0" i = 1 для аргумента в "$ @";  do echo "$ {i}: $ argument" ((i ++)) done  
1
ответ дан 13 August 2018 в 16:14
  • 1
    Проблема начинается именно с этой строки args2 = "\" [in] scale = 580: 380 [T1], [T1] pad = 720: 530: 0: 50 \ "" Я попытался использовать обратную косую черту, несколько вещей, ничего не работает, аргументы находятся внутри сценария bash, а не снаружи :( действительно хлопотно, я также добавил, что строка ffmpeg, которую вы ее отредактировали, не работала – allenskd 23 April 2011 в 21:01

Другие вопросы по тегам:

Похожие вопросы: