gpt4 book ai didi

c++ - 使用 libavcodec 时无法打开编码器

转载 作者:行者123 更新时间:2023-12-04 23:30:03 27 4
gpt4 key购买 nike

我正在使用 9.7 版的 libavcodec 编写一个简单的演示,几乎与 official example 中的示例完全相同。 .
但是,我无法打开编码器。另外,av_opt_set(context->priv_data, "preset", "slow", 0)总是导致粉碎。
这是我的代码:

// other code...
int ret = 0;
avcodec_register_all();
AVCodec* codec = NULL;
AVCodecContext* context = NULL;
AVFrame* frame = NULL;
uint8_t endcode[] = { 0, 0, 1, 0xb7 };
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if(!codec){
qDebug()<<"cannot find encoder";
return;
}
qDebug()<<"encoder found";

context = avcodec_alloc_context3(codec);
if(!context){
qDebug()<<"cannot alloc context";
return;
}
qDebug()<<"context allocted";

context->bit_rate = 400000;
/* resolution must be a multiple of two */
context->width = 352;
context->height = 288;
/* frames per second */
context->time_base= (AVRational){1,25};
context->gop_size = 10; /* emit one intra frame every ten frames */
context->max_b_frames=1;
context->pix_fmt = AV_PIX_FMT_YUV420P;
qDebug()<<"context init";

// av_opt_set(context->priv_data, "preset", "slow", 0); // this will crush
AVDictionary *d = NULL;
av_dict_set(&d, "preset", "ultrafast",0); // this won't

ret = avcodec_open2(context, codec, &d);
if ( ret < 0) {
qDebug()<<"cannot open codec"<<ret;
return;
}
qDebug()<<"codec open";

// other code...
这输出:

encoder found

context allocted

context init

cannot open codec -22

[libx264 @ 0340B340] [IMGUTILS @ 0028FC34] Picture size 0x10 is invalid

[libx264 @ 0340B340] ignoring invalid width/height values

[libx264 @ 0340B340] Specified pix_fmt is not supported


我不认为宽度/高度是无效的并且在那里格式化。我不知道这里有什么问题。
任何帮助。请?

最佳答案

这是一个 libav 的问题,不过我还没有检查它的问题列表。当我使用另一个每日构建 20131101 时,代码运行良好。

关于c++ - 使用 libavcodec 时无法打开编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617659/

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