memory-management - 实时系统中的 FFMPEG,内存分配问题
问题描述
对于我们的项目,我们计划使用 FFMPEG 进行实时解码和编码。因此,我们必须为我们读入的每一帧分配几个对象,例如 AVCodecContext、AVFrame、AVPacket。因为这是在实时系统上完成的,所以我们担心重复的内存分配和 de 会产生内存碎片。 -分配。这是一个问题吗?
解决方案
不需要为每一帧分配这些对象。单个 AVCodecContext、AVFrame 和 AVPacket 足以处理一个流。当它需要处理数据包和帧的序列时,我们可以重用相同的 AVFrame ( av_frame_unref ) 和 AVPacket ( av_packet_unref ) 对象。但不要忘记在最后释放所有对象(它们都有自定义删除功能)。
本教程通过示例代码很好地解释了这件事Learn FFmpeg libav the Hard Way
此外,您可以查看官方FFmpeg 示例页面以了解更复杂的示例。
推荐阅读
- pyspark - IllegalArgumentException: requirement failed: Column _OneHotEncoder already exists
- github - how to push CS50AI project to GitHub
- powershell - 从文本文件中删除空格
- java - TextRecognize from image not detecting other language
- google-apps-script - 如何获取另一个电子表格的最后一行并将数据放入其中?
- c# - 我见过很多这样的错误解决方案,但我找不到任何可以帮助我解决这个问题的方法。真的希望你们中的任何人都可以提供帮助。谢谢
- swiftui - 在 Firebase 登录过程中,我应该在哪里检查/迁移现有内容?
- python-3.x - 如何在 python 中修复此语法错误?
- excel - 如何在自动筛选条件值中包含整数
- javascript - 使用延迟加载解析图像