gpt4 book ai didi

memory - 如何知道 ffmpeg 中一个 AVPacket 的大小?

转载 作者:行者123 更新时间:2023-12-04 22:52:40 34 4
gpt4 key购买 nike

我正在使用 ffmpeg 库。我想知道一个数据包可以占用多少内存。
我调试检查 AVPacket 上的成员,它们似乎都不合理,例如 AVPacket.size,ec。

最佳答案

如果您提供自己的数据缓冲区,则它需要具有最小 FF_MIN_BUFFER_SIZE 的大小。然后,您将 AVPacket.size 设置为分配的大小,并将 AVPacket.data 设置为您分配的内存。

请注意,如果您提供自己的缓冲区并且缓冲区太小,所有 FFmpeg 解码例程都会失败。

另一种可能性是让 FFmpeg 为您计算最佳尺寸。
然后执行以下操作:

AVPacket pkt;
pkt.size = 0;
pkt.data = NULL; // <-- the critical part is there
int got_output = 0;

ret = avcodec_encode_audio2(ctx, &pkt, NULL, &got_output);

并将此 AVPacket 提供给编码编解码器。内存将自动分配。
如果 got_output 设置为 1,您必须在从编码器返回时调用 av_free_packet。
如果出现错误,FFmpeg 会自动释放 AVPacket 内容。

关于memory - 如何知道 ffmpeg 中一个 AVPacket 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16880537/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com