首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用avcodec_close的ffmpeg问题

使用avcodec_close的ffmpeg问题
EN

Stack Overflow用户
提问于 2013-02-19 06:39:24
回答 1查看 3.3K关注 0票数 1

avcodec_close是怎么称呼的呢?

这是再现我的问题的最简单的代码:

代码语言:javascript
复制
bool CDataSequenceFormat::openVideoCodec( AVStream* videoStream )
{
    AVCodecContext* codecContext = videoStream->codec;

    AVCodec* codec = avcodec_find_encoder(codecContext->codec_id);

    if (codec == NULL || avcodec_open2(codecContext, codec, NULL) < 0 || avcodec_is_open(codecContext)==0)
    {
        return false;
    }

    avcodec_close(codecContext);

    return true;
}

avcodec_open2不返回错误,avcodec_is_open返回1,所以我假设codecContext已经正确设置。我假设这是错误的吗?

当我立即调用avcodec_close时,我在avcodec-54.dll的某个地方得到一个访问冲突异常(写信给badf00d -但我认为avcodec_open2处理了所有编解码器字段的填充)。

当试图在未打开的编解码器上调用avcodec_close时,人们似乎会遇到分段错误,但我认为情况并非如此。

知道我做错什么了吗?

编辑:我应该提到我继承了这段代码,它使用的是一个相当老的ffmpeg版本,这个问题只有在我更新到最新的ffmpeg tarball时才会出现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 22:28:56

我使用output_example.c示例重写了类,它似乎神奇地解决了这个问题。

在进一步的研究中,问题似乎是av_set_parametersav_write_headeravcodec_open2的顺序。上一个版本的ffmpeg似乎并不关心avcodec_open是在av_set_parameters之后调用的,但实际上没有在最新版本中填充所有的编解码字段,除非它被称为第一个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14951319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档