我正在使用 libavformat-dev 包来获取一些媒体文件属性,例如比特率、持续时间等。但是,我想使用我的自定义 malloc、calloc、realloc 函数来代替 libavformat 使用的系统函数。有没有办法在 libavformat 中注册我的自定义函数?
问问题
324 次
1 回答
0
FFmpeg 库使用“av_”前缀的函数名进行内存管理。您可以在应用程序中简单地重载这些函数,因此运行时链接器将使用您的版本,例如:
void *av_malloc(size_t size) {
fprintf(stderr, "Hijacking FFmpeg malloc(): Requested %zd bytes\n", size);
return malloc(size);
}
FFmpeg 源代码中的注释:
如果您想用您自己的实现(不推荐)覆盖这些函数,您必须将 libav* 链接为动态库并从链接器标志中删除 -Wl,-Bsymbolic。请注意,这会降低性能。
参考资料: https ://ffmpeg.org/doxygen/3.1/group__lavu__mem.html https://ffmpeg.org/doxygen/3.1/mem_8c_source.html#l00260
于 2020-08-17T20:13:58.677 回答