从ffmpeg.input()对象中获取输入文件名



我正在使用ffmpeg-python库。

我有一个输入文件对象in_,例如:
import ffmpeg
in_ = ffmpeg.input('video.mp4')

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

在仔细研究了它们的代码和类之后,我想出了一个简短的函数,它总是返回文件名。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

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

相关内容

  • 没有找到相关文章

最新更新