首页 > 解决方案 > 实时系统中的 FFMPEG,内存分配问题

问题描述

对于我们的项目,我们计划使用 FFMPEG 进行实时解码和编码。因此,我们必须为我们读入的每一帧分配几个对象,例如 AVCodecContext、AVFrame、AVPacket。因为这是在实时系统上完成的,所以我们担心重复的内存分配和 de 会产生内存碎片。 -分配。这是一个问题吗?

标签: memory-managementffmpegreal-time

解决方案


不需要为每一帧分配这些对象。单个 AVCodecContext、AVFrame 和 AVPacket 足以处理一个流。当它需要处理数据包和帧的序列时,我们可以重用相同的 AVFrame ( av_frame_unref ) 和 AVPacket ( av_packet_unref ) 对象。但不要忘记在最后释放所有对象(它们都有自定义删除功能)。

本教程通过示例代码很好地解释了这件事Learn FFmpeg libav the Hard Way

此外,您可以查看官方FFmpeg 示例页面以了解更复杂的示例。


推荐阅读