【问题标题】:Converting jpg's to mp4 using FFmPy使用 FFmPy 将 jpg 转换为 mp4
【发布时间】:2018-06-29 15:53:36
【问题描述】:

我有一个包含 jpg 图像的文件,我想将其转换为 mp4 视频。我已经设法在命令行上使用

cat path/to/pictures/%d.jpg | ffmpeg -f image2pipe -i - output.mp4

但是,当我尝试通过 FFmPy 进行操作时:

ff = ffmpy.FFmpeg(
inputs={'path/to/pictures/%d.jpg': None},
outputs={'output.mp4': None})

ff.cmd
ff.run()

我会遇到错误:

    FFRuntimeError: `ffmpeg -i path/to/pictures/1.jpg -f output.mp4` exited with status 1

STDOUT:


STDERR:

我真的不确定问题出在哪里,我所做的任何更改都会导致相同的错误。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 如果直接从错误中运行命令会发生什么?而不是管道命令。
  • 如果你的意思是直接在命令行运行ff.cmd输出,它会到达/path/to/pictures/101.jpg并询问'File '/home/matthewl/Downloads/Eyes_side_to_side/101.jpg' already exists. Overwrite ? [y/N],一直到最后一个jpg`
  • 你在使用 python for 循环吗? '/path/to/pictures/%d.jpg' 中的 %d 如何被数字字符串替换? (我们需要防止这种情况发生......)
  • 我没有使用任何循环,实际上只是上面的代码,它或多或少是FFmPy在他们的文档中给出的示例的副本,我认为%d会列出我所有的jpg文件是 '1.jpg' 一直到 '500.jpg'
  • 我的意思是,如果它有助于解决问题的核心,我可能会错误地写入路径,或者只是尝试将一张图像转换为 mp4,我仍然会遇到同样的错误。

标签: python ffmpeg jpeg mp4 ffmpy


【解决方案1】:

既然您知道在命令行中工作的ffmpeg 命令,那么使用subprocess 简单地调用它可能会更容易:

import subprocess

cmd = ['ffmpeg', '-i', '/path/to/pictures/%d.jpg', 'output.mp4']
retcode = subprocess.call(cmd)
if not retcode == 0:
   raise ValueError('Error {} executing command: {}'.format(retcode, ' '.join(cmd)))    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2018-11-15
    • 2019-01-12
    • 1970-01-01
    • 2015-09-03
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多