我正在调用一个名为avformat_alloc_context()的FFMPEG库,它返回一个指向AVFormatContext类型的指针。结构AVFormatContext在avformat库中定义。
显然;这不是一个ctypes默认类型,当我尝试将引用传递给我的代码中的另一个ffmpeg库时会导致错误。
有没有办法添加库内定义的类?我读了一下我在网上找到的文件,并且无法找到这个问题的好答案。
答案 0 :(得分:1)
首先,您需要将AVFormatContext
结构转换为ctypes声明。您可以通过deriving from the Structure
class执行此操作。
然后,您需要指定avformat_alloc_context
函数返回指向该结构的指针。您指定restype
来执行此操作:
avformat_alloc_context.restype = POINTER(AVFormatContext)
然后你可以这样调用这个函数:
contextPtr = avformat_alloc_context()
要获取指针的内容,请阅读contents
属性:
context = contextPtr.contents
当你完成指针时,不要忘记调用avformat_free_context()
。
这些信息在ctypes documentation中有更详细的介绍。