python - ffmpeg 子进程无法在 OS X 上打开

标签 python ffmpeg subprocess

我有这个脚本:

PATH = os.path.dirname(os.path.abspath(__file__))


global TEMP
for video in os.listdir(VIDEOS):
    ffmpeg = PATH + "/ffmpeg/ffmpeg"
    arg1 = " -v 0 -i "
    arg2 = VIDEOS + "/" + video
    arg3 = " -r 1 -f image2 "
    arg4 = TEMP + "/" + os.path.splitext(video)[0] + "-%d.jpg"
    subprocess.Popen(ffmpeg + arg1 + arg2 + arg3 + arg4).wait()

在 Windows 上完美运行(当然使用 ffmpeg.exe),但是当我尝试在 Mac 上运行它时出现错误:

  File "/Users/francesco/Desktop/untitled0.py", line 20, in Main
    subprocess.Popen(ffmpeg + arg1 + arg2 + arg3 + arg4).wait()

  File "subprocess.pyc", line 710, in __init__

  File "subprocess.pyc", line 1327, in _execute_child

OSError: [Errno 2] No such file or directory

我尝试打印 ffmpeg + arg1 + arg2 + arg3 + arg4 并将其手动粘贴到终端中,没有任何反应,它只是卡住了,但是如果我尝试手动复制所有打印的参数,它会起作用。

最佳答案

subprocess.Popen 需要字符串列表,例如 [ffmpeg, arg1, ...]

此命令在 Linux 上失败:

subprocess.Popen("ls -la").wait()

虽然这个成功了:

subprocess.Popen(["ls", "-la"]).wait()

关于python - ffmpeg 子进程无法在 OS X 上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480268/

相关文章:

python - 将推文创建时间转换为 UTC

ffmpeg - 如何使用 vo-amrwbenc 库构建 ffmpeg?

python - 正确使用 subprocess.Popen 通过 SSH 发出命令

python - 无法从 subprocess.Popen 读取 stderr

python - 分组和过滤 Pandas 数据框

python - 在 Python 中实现位交换 hack

python - 为什么 Django 使用元组的元组来存储静态字典,我应该这样做吗?

java.io.IOException : Cannot run program "usr/bin/ffmpeg ": error=2, 没有那个文件或目录

image - FFmpeg 将图像合并到视频中

使用 subprocess 模块后 Python raw_input 不起作用