【问题标题】:Python : call ffmpeg command line with subprocessPython:使用子进程调用 ffmpeg 命令行
【发布时间】:2015-01-13 13:45:51
【问题描述】:

我正在尝试使用 subprocess.call 调用简单的 ffmpeg 命令行。 (例如:ffmpeg -i input\video.mp4 -r 30 input\video.avi

通过直接输入 ffmpeg 命令它可以工作,但是当我尝试使用 subprocess.call 调用它时:subprocess.call('ffmpeg -i input\video.mp4 -r 30 input\video.avi', shell=True) 没有错误,但它不会产生任何东西。

知道问题出在哪里吗? (我正在使用 python 3.4 或 2.7,我都尝试过)

【问题讨论】:

  • 不相关:您在 Windows 上不需要 shell=True
  • 我不知道,谢谢!

标签: python video ffmpeg subprocess


【解决方案1】:

终于找到问题了:当你使用子进程时,你必须使用

/

为您的文件位置而不是

\

EDIT :或者您可以使用原始字符串文字 -> r'ffmpeg -i input\video.mp4 ...'(注意:r'')或者您可以将它们加倍 '\\' 感谢 J.F. 塞巴斯蒂安

【讨论】:

  • 子进程没什么特别之处。您可以对包含反斜杠的 Windows 路径使用原始字符串文字,例如 r'ffmpeg -i input\video.mp4 ...'(注意:r'')或者您应该将它们加倍 '\\'
【解决方案2】:
x=subprocess.Popen('ffmpeg -i input\video.mp4 -r 30 input\video.avi', shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output,err=x.communicate()
if output:
      print "success ",output
else:
      print "error ",err

您可以试试这个并检查输出和错误(如果有)。

【讨论】:

  • 使用更新后的代码:错误 b''(我将错误更改为 err,未定义错误)
  • @Jacqueslelezard 您的ffmpeg 命令无法正常工作。它失败并出现错误b
  • 我看到了,但是为什么呢?如果我键入完全相同的命令而不从 python 运行它就没有任何问题...
  • @Jacqueslelezard 你检查过文件位置吗?脚本的位置是否正确?
猜你喜欢
  • 2014-11-15
  • 2019-06-21
  • 2021-04-11
  • 2020-07-25
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 2023-02-25
相关资源
最近更新 更多