Передача команд с двойными кавычками в subprocess.call в python - PullRequest
0 голосов
/ 07 июня 2018

Я хочу передать команду машине Linux с ffmpeg, используя python, содержащий двойные кавычки.Это мой сценарий:

drawtext = "drawtext=\"fontfile=DejaVuSans: text='Random Name': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=20: y=20\""
subprocess.call(["ffmpeg", "-v", "error", "-i", input.mp4, "-vf", drawtext, output.mp4])

Если я распечатаю переменную drawtext, это вывод:

drawtext="fontfile=DejaVuSans: text='Reference Image': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=20: y=20"

И это моя ошибка в ffmpeg:

[Parsed_drawtext_0 @ 0x564ad79f99c0] [Eval @ 0x7ffd41131810] Invalid chars '"' at the end of expression '20"'
[Parsed_drawtext_0 @ 0x564ad79f99c0] Failed to configure input pad on Parsed_drawtext_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0

Если я выполню следующую команду в оболочке Linux, она будет работать нормально:

$ ffmpeg -ss 10 -i input.mp4 -vf drawtext="fontfile=DejaVuSans: text='Random Name': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=20: y=20" output.mp4

1 Ответ

0 голосов
/ 07 июня 2018

Одним из способов выполнения может быть создание сценария оболочки с содержимым следующим образом:

#!/bin/bash
ffmpeg -ss 10 -i input.mp4 -vf drawtext="fontfile=DejaVuSans: text='Random Name': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: boxborderw=5: x=20: y=20" output.mp4

Затем вы можете сохранить его как script.sh и затем вызвать скрипт следующим образом:

import subprocess; subprocess.call(`./script.sh`; shell=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...