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

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

我正在使用 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
我知道可能有更好的方法可以做到,但我太累了,找不到它们

关于python - 从 ffmpeg.input() 对象获取输入文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69732072/

相关文章:

python - 如何在 python 函数中使用 ffmpeg

python - 在 Django 中返回 PDF 响应

python - Enaml 获取在事件处理程序中传递的参数

Python:匹配包含正则表达式代码的两个变量的或

python - PDF 文件操作(打开一个大的 pdf 文件,找到关键字,然后保存找到的页面,然后拆分这些页面并将它们合并为一个 pdf)

node.js - 从多个视频文件到单个输出

python - 将 ffmpeg 与子进程 python 一起使用

使用 urllib2 的 Python 并发查询性能

python-3.x - 带有 Voila 的 Ipywidgets 未显示 : ERROR tornado Uncaught exception GET

python - 安装包时缺少 pyconfig.h