【问题标题】:Get input filename from ffmpeg.input() object从 ffmpeg.input() 对象获取输入文件名
【发布时间】:2021-12-12 08:32:55
【问题描述】:

我正在使用ffmpeg-python 库。

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

import ffmpeg

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

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

【问题讨论】:

    标签: python python-3.x ffmpeg ffmpeg-python


    【解决方案1】:

    在深入研究了他们的代码和类之后,我想出了一个始终返回文件名的简短函数。 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
    

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

    【讨论】:

      猜你喜欢
      • 2013-09-29
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多