用Python编辑视频

-1 投票
1 回答
70 浏览
提问于 2025-04-14 16:32

我正在尝试使用ffmpeg-python库编辑一个MP4视频,但我遇到了一个错误:

类型错误:'ffmpeg'没有'input'这个属性

这是我的代码,直接从官方文档复制过来的:

import ffmpeg
x=ffmpeg.input('xx.mp4')
x=ffmpeg.hflip(x)
x=ffmpeg.output(x,'yy.mp4')
ffmpeg.run(x)

我对这个错误感到很困惑。
有没有人能帮我解决这个问题呢?

使用ffmpeg库时的错误

谢谢。

1 个回答

1

根据一些简单的搜索,你可能安装了错误的ffmpeg Python库。
你可以使用pip install ffmpeg-python来确保安装正确的库。
你还可以用pip list来列出已安装的模块,手动检查一下是否有其他模块也叫ffmpeg。

你也可以手动检查ffmpeg文件,以确保它是正确的:

import ffmpeg
print(ffmpeg)

这个输出的内容大概是这样的

<module 'ffmpeg' from 'some_path/__init__.py'>

然后你可以打开文件some_path/_ffmpeg.py,检查里面是否有你需要的input属性。
ffmpeg-python版本0.2.0开始,这个文件的开头是这样的:


from ._utils import basestring

from .nodes import (
    filter_operator,
    GlobalNode,
    InputNode,
    MergeOutputsNode,
    OutputNode,
    output_operator,
)


def input(filename, **kwargs):
    """Input file URL (ffmpeg ``-i`` option)

    Any supplied kwargs are passed to ffmpeg verbatim (e.g. ``t=20``,
    ``f='mp4'``, ``acodec='pcm'``, etc.).

    To tell ffmpeg to read from stdin, use ``pipe:`` as the filename.

    Official documentation: `Main options <https://ffmpeg.org/ffmpeg.html#Main-options>`__
    """
    kwargs['filename'] = filename
    fmt = kwargs.pop('f', None)
    if fmt:
        if 'format' in kwargs:
            raise ValueError("Can't specify both `format` and `f` kwargs")
        kwargs['format'] = fmt
    return InputNode(input.__name__, kwargs=kwargs).stream()

   .......

撰写回答