繁体   English   中英

CMD 错误 output 子进程与 ffmpeg/ffprobe

[英]With CMD wrong output subprocess with ffmpeg/ffprobe

当我在 cmd 中运行"ffprobe passionfruit.mp4 -show_streams"时遇到问题

但是当我使用相同的子进程时:

command = 'ffprobe "C:/Users/NMASLORZ/Downloads/passionfruit.mp4" -show_streams'
p = subprocess.Popen(command, universal_newlines=True, shell=True,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
text = p.stdout.read()
retcode = p.wait()
print (text)

我有这个 output:“'ffprobe' 未被识别为内部命令或外部命令、可执行程序或批处理文件。” 我尝试了每个合成器,即使在列表中我仍然有相同的 output

那是因为您的 Windows 终端读取系统的 PATH 或以其他方式定义了ffprobe的路径。 当您使用shell=True运行Popen时,它会通过 shell 运行执行,这可能会或可能不会(您的情况)可以访问该 PATH。

可能的解决方案:

  1. 提供ffprobe的完整路径(最简单):
command = 'C:\whatever\ffprobe.exe "C:/Users/NMASLORZ/Downloads/passionfruit.mp4" -show_streams'
  1. 使用shell=False 可能不起作用,取决于您的系统。
command = ('ffprobe', 'C:/Users/NMASLORZ/Downloads/passionfruit.mp4', '-show_streams')
p = subprocess.Popen(command, universal_newlines=True, shell=False,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  1. 通过env变量添加PATH并在该 PATH 添加ffprobe

如果 env 不是 None,它必须是定义新进程的环境变量的映射; 这些用于代替继承当前进程环境的默认行为。 它直接传递给 Popen。

检查文档以获得进一步的指导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM