gpt4 book ai didi

c++ - FFmpeg AVPacket控件

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:38 26 4
gpt4 key购买 nike

根据 avcodec.h 文件中的文本,有些解码器可能支持一个 AVPacket 中的多个帧,但是 avcodec_decode_video2 方法只解码第一帧......我必须得到所有这些。

在 libavcodec 的源代码中,参数 AVPacket 被注意到为 const AVPacket *avpacket,所以在解码这个包解码器时不能改变 AVPacket 的字段,我可以改变包数据的偏移量或删除已经接收的数据使解码器循环读取数据包中的所有帧???

最佳答案

我认为这不会再发生了,但基本上你会做这样的事情:

while(packet->size > 0)
{
int ret = avcodec_decode_video2(..., packet);
if(ret < -1)
throw std::exception("error");

packet->size -= ret;
packet->data += ret;
}

// NOTE! You have to restore original packet->size and packet->data, or modify a copy, before calling av_packet_free.

关于c++ - FFmpeg AVPacket控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015769/

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