gpt4 book ai didi

python - 在python中将带有双引号的命令传递给subprocess.call

转载 作者:行者123 更新时间:2023-12-04 22:59:33 27 4
gpt4 key购买 nike

我想使用包含双引号的 python 将命令传递给运行 ffmpeg 的 Linux 机器。那是我的脚本:

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 shell 中执行以下命令,它就可以正常工作:
$ 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

最佳答案

一种执行方式是创建一个 shell 脚本,其内容如下:

#!/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)

关于python - 在python中将带有双引号的命令传递给subprocess.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50745369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com