0

我正在使用ffmpeg-python图书馆。

我有一个输入文件对象in_,例如:

import ffmpeg

in_ = ffmpeg.input('video.mp4')

我以后如何(在添加过滤器等之后)从中提取使用的文件的原始名称in_?我在他们的文档中没有看到任何详细说明我可以访问它的现有属性(例如in_.filename)的内容 - 除了在单独的变量中明确声明文件名之外,是否存在这样的属性(或其他替代方法)?

4

1 回答 1

0

在深入研究了他们的代码和类之后,我想出了一个总是返回文件名的简短函数。while 循环是为了通过可能已应用于输入的任意数量的过滤器对象:

def getInputFilename(stream):
    while stream.node._KwargReprNode__incoming_edge_map != {}:
        stream = stream.node._KwargReprNode__incoming_edge_map[None][0]
        if not hasattr(stream, 'node'):
            return stream.__dict__['kwargs']['filename']
    return stream.node.__dict__['kwargs']['filename']

在全:

import ffmpeg

in_ = ffmpeg.input('video.mp4')

// Filters added here etc etc

def getInputFilename(stream):
    while stream.node._KwargReprNode__incoming_edge_map != {}:
        stream = stream.node._KwargReprNode__incoming_edge_map[None][0]
        if not hasattr(stream, 'node'):
            return stream.__dict__['kwargs']['filename']
    return stream.node.__dict__['kwargs']['filename']

print(getInputFilename(in_))

输出:

video.mp4

我知道可能有更好的方法可以做到,但我太累了,找不到它们

于 2021-10-27T02:55:18.847 回答