Команда фильтра ffmpeg.js без кавычек - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу использовать фильтр в версии ffmpeg, скомпилированной для Javascript (ffmpeg.js).Но парсер, похоже, не обрабатывает кавычки, поэтому мне нужно написать полную команду без кавычек.

Как мне написать следующую команду без кавычек?

ffmpeg -i video.mp4 -i image.jpg -filter_complex "[1][0]scale2ref[i][v];[v][i]overlay=10:10:enable=\'between(t,1,2)\'" -c:a copy output.mp4

В javascript Iукажите команду следующим образом:

worker.postMessage({
 type: 'command',
 arguments: "-i video.mp4 -i image.jpg -filter_complex '[1][0]scale2ref[i][v];[v][i]overlay=10:10' -c:a copy output.mp4".split(' '),
files: [
{
    data: new Uint8Array(videofile),
    name: 'video.mp4'
},
{
    data: new Uint8Array(imagefile),
    name: 'image.jpg'
},

]});

Что, однако, приводит к:

[AVFilterGraph @ 0xdf4c30] Нет такого фильтра: '[1] [0] scale2ref [i] [v]; [v] [i] overlay = 10: 10 '

Я проверил, и фильтр наложения работает в более простой версии без кавычек, например, этоКоманда работает:

arguments: "-i video.mp4 -i image.jpg -filter_complex overlay=10:10 -c:a copy output.mp4".split(' '),

1 Ответ

0 голосов
/ 10 апреля 2019

Думаю, проблема в том, что ' все еще будет после разделения, что приводит к путанице в ffmpeg.Если бы это была настоящая оболочка, анализатор аргументов разбил бы и правильно проанализировал кавычки.

Попробуйте удалить ' в исходной строке следующим образом:

arguments: "-i video.mp4 -i image.jpg -filter_complex [1][0]scale2ref[i][v];[v][i]overlay=10:10 -c:a copy output.mp4".split(' ')

Или, возможно, даже пропуститьвместо этого выполняется разделение и передача списка аргументов:

arguments: ["-i", "video.mp4", "-i", "image.jpg", "-filter_complex", "[1][0]scale2ref[i][v];[v][i]overlay=10:10", "-c:a", "copy", "output.mp4"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...