python - 如何在 Windows 上的 Python 3 中运行子进程以转换视频?

标签 python django python-3.x cmd ffmpeg

我有一个小问题,我尝试了很多时间在 python 3 中使用 FFMPEG 转换视频,如下所示:

模型,

class Video(models.Model):
   name = models.CharField(max_length=200, null=False)
   state = models.CharField(max_length=30, null=False)
   user_email = models.CharField(max_length=30, null=False)
   uploadDate = models.DateTimeField(null=False)
   message = models.CharField(max_length=200, null=False)
   original_video = models.FileField(upload_to='video', null=True)
   converted = models.BooleanField(default=False)

以及转换后的代码。

video = Video.objects.filter(id=param_id).get()
pathConverted = 'C:\\Users\\diego\\Documents\\GitHub\\convertido.mp4'
cmd = ['ffmpeg', '-i ', video.original_video.path, ' -b 1500k -vcodec ibx264 -g 30', pathConverted]
print('Ejecutando... ', ' '.join(cmd))
try:
    proc = subprocess.run(cmd, shell=True, check=True)
    proc.subprocess.wait()
except subprocess.CalledProcessError as e:
    raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))

错误是这样的。

 raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output)) RuntimeError: command '['ffmpeg', '-i ', 'C:\\Users\\diego\\Documents\\GitHub\\video1.avi', ' -b 1500k -vcodec libx264 -g 30', 'C:\\Users\\diego\\Documents\\GitHub\\convertido.mp4']' return with error (code 1): None

我也试过这个:

video = Video.objects.filter(id=1).get()
pathConverted = 'C:\\Users\\diego\\Documents\\GitHub\\convertido.mp4'
cmd = ['ffmpeg', '-i ', video.original_video.path, ' -b 1500k -vcodec libx264 -g 30', pathConverted]
print('Ejecutando... ', ' '.join(cmd))
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
proc.subprocess.wait()

在这种情况下,错误是:

FileNotFoundError: [WinError 2] No such file or directory

但是当我复制路径并将其粘贴到 Windows 上的 CMD 中以尝试转换视频时。它工作正常。

然后,我一头雾水,不明白是什么错误。

有人可以帮帮我吗?

最佳答案

未找到的文件是文件“ffmpeg”。 尝试输入路径和扩展名的文件:c:\Program Files\ffmpeg\ffmpeg.exe

最好的问候 伊曼纽尔

关于python - 如何在 Windows 上的 Python 3 中运行子进程以转换视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240735/

相关文章:

python - 在 Python 3 中将运算符放在列表中

python - 将用户输入从 tkinter 保存到变量并检查其内容

css - 为什么更改 CSS 类名会破坏样式?

python - 正则表达式匹配空格和字符串直到正斜杠

python - Django 卡在默认页面上

python - mypy错误,Union/Optional重载, “Overloaded function signatures 1 and 2 overlap with incompatible return types”

python - 尝试合并不同 Excel 文件中的列

python - 如何从 Python 脚本向 Google App Script API 传递参数?

python - 在 Pypi 包中包含静态文件

python-3.x - python Pandas 中的条件日期连接