FFmpeg конец точки с запятой фильтра игнорируется при оценке связанных фильтров - PullRequest
1 голос
/ 20 января 2020

Я новичок в FFmepg, поэтому, пожалуйста, прости меня, если терминология неверна.

Я хотел бы добавить текст и аудио в существующий видеофайл. Я соединяюсь вместе 2 drawText с, затем в другом фильтре, я хочу объединить аудио дорожки исходного видео и немного фоновой музыки c.

ffmpeg -i sourceNoText.mp4 -i backgroundMusic.mp3 -filter_complex "drawtext=enable='between(t,0,3.5)':fontfile=burbank.ttf:text='Your name - PETER':fontsize=90:x=(w-text_w)/2:y=(h-th-(h/10)-20):fontcolor='White', drawtext=enable='between(t,11.5,14.75)':fontfile=burbank.ttf:text='You couldn't have done it without Peter':fontcolor='White':fontsize=90:x=(w-text_w)/2:y=(h-th-(h/10)-20);[0:a][1:a]amerge,pan=stero:c0<c0+c2:c1<c1+c3[outMergedAudio]" -map 0:v -map "[outMergedAudio]" -c:a aac edited.mp4

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

[drawtext @ 0000020fe395bec0] Cannot find color 'c0<c0+c2'
[drawtext @ 0000020fe395bec0] Unable to parse option value "c0<c0+c2" as color
[drawtext @ 0000020fe395bec0] Cannot find color 'c0<c0+c2'
[drawtext @ 0000020fe395bec0] Unable to parse option value "c0<c0+c2" as color
[drawtext @ 0000020fe395bec0] Error setting option fontcolor to value c0<c0+c2.
[Parsed_drawtext_1 @ 0000020fe395ad00] Error applying options to the filter.
[AVFilterGraph @ 0000020fe3892e00] Error initializing filter 'drawtext' with args 'enable=between(t,11.5,14.75):fontfile=burbank.ttf:text=You couldnt have done it without Peter:fontcolor=White:fontsize=90:x=(w-text_w)/2:y=(h-th-(h/10)-20);[0:a][1:a]amerge,pan=stero:c0<c0+c2:c1<c1+c3[outMergedAudio]'
Error initializing complex filters.

Работа без фильтра аудио работает хорошо, поэтому я не верю, что там будет синтаксическая ошибка. Что мне не хватает? Задание входного и выходного потока для цепочки drawText по-прежнему вызывает ту же проблему.

Я использую ffmpeg версии 4.2.1.

Заранее спасибо.

1 Ответ

0 голосов
/ 21 января 2020

Поскольку у вас есть одна кавычка в текстовой строке вашего 2-го текста текста, заключенная в одинарные кавычки, это отбрасывает некоторое состояние синтаксического анализатора. Заключите текст в экранированные двойные кавычки и экранируйте одинарные кавычки внутри.

Кроме того, синтаксис панорамирования не рекомендуется.

ffmpeg -i sourceNoText.mp4 -i backgroundMusic.mp3 -filter_complex "drawtext=enable='between(t,0,3.5)':fontfile=burbank.ttf:text='Your name - PETER':fontsize=90:x=(w-text_w)/2:y=(h-th-(h/10)-20):fontcolor='White', drawtext=enable='between(t,11.5,14.75)':fontfile=burbank.ttf:text=\"You couldn\'t have done it without Peter\":fontcolor='White':fontsize=90:x=(w-text_w)/2:y=(h-th-(h/10)-20);[0:a][1:a]amerge,pan=stereo|c0<c0+c2|c1<c1+c3[outMergedAudio]" -map 0:v -map "[outMergedAudio]" -c:a aac edited.mp4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...