Не могу открыть кодировщик при использовании libavcodec

0

Я использую libavcodec, версия 9.7, чтобы написать простую демонстрацию, почти точно как пример в официальном примере.

Однако я не могу открыть кодировщик. Кроме того, 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...

Эти результаты:

найден кодер

контекстный контекст

контекст init

не может открыть кодек -22

[libx264 @0340B340] [IMGUTILS @0028FC34] Недопустимый размер изображения 0x10

[libx264 @0340B340] игнорирование недопустимых значений ширины/высоты

[libx264 @0340B340] Указанный pix_fmt не поддерживается

Я не думаю, что ширина/высота недействительны и форматируются там. Я понятия не имею, что здесь не так.

Любая помощь. плз?

Теги:
ffmpeg
libx264

1 ответ

0
Лучший ответ

Это проблема libav, но я не проверял ее список проблем. Код отлично работает, когда я использую еще одну ежедневную сборку, 20131101.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню