如何在使用ctypes调用FFmpeg库时指定非默认类型

2024-06-13 16:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调用一个名为avformat\u alloc\u context()的FFMPEG库,该库返回指向AVFormatContext类型的指针。结构AVFormatContext在avformat库中定义。你知道吗

显然,这不是一个ctypes默认类型,当我试图将对它的引用传递到代码中更深层的另一个ffmpeg库时会导致错误。你知道吗

有没有一种方法可以添加到库中定义的类中?我通读了网上能找到的文档,却找不到这个问题的好答案。你知道吗


Tags: 代码类型定义contextctypes结构ffmpeg深层
1条回答
网友
1楼 · 发布于 2024-06-13 16:54:34

首先需要将AVFormatContext结构转换为ctypes声明。你可以通过deriving from the ^{} class来实现。你知道吗

然后需要指定avformat_alloc_context函数返回指向该结构的指针。指定restype执行此操作:

avformat_alloc_context.restype = POINTER(AVFormatContext)

然后可以这样调用函数:

contextPtr = avformat_alloc_context()

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

context = contextPtr.contents

完成指针后,不要忘记调用avformat_free_context()。你知道吗

这些信息在ctypesdocumentation中有更详细的介绍。你知道吗

相关问题 更多 >