0

我正在调用一个名为 avformat_alloc_context() 的 FFMPEG 库,它返回一个指向 AVFormatContext 类型的指针。结构 AVFormatContext 在 avformat 库中定义。

明显地; 这不是一个 ctypes 默认类型,当我尝试将它的引用传递给我的代码中的另一个 ffmpeg 库时,会导致错误。

有没有办法添加在库内定义的类?我通读了可以在网上找到的文档,但找不到这个问题的好答案。

4

1 回答 1

1

您首先需要将AVFormatContext结构转换为 ctypes 声明。您可以通过从派生来Structure做到这一点。

然后您需要指定该avformat_alloc_context函数返回一个指向该结构的指针。您指定restype这样做:

avformat_alloc_context.restype = POINTER(AVFormatContext)

然后你可以像这样调用函数:

contextPtr = avformat_alloc_context()

要获取指针的内容,请阅读contents属性:

context = contextPtr.contents

并且不要忘记在avformat_free_context()完成指针后调用。

这些信息在 ctypes文档中有更详细的介绍。

于 2013-08-01T16:09:49.897 回答