libx264编码错误输入图片宽度(40)大于步幅(0)

时间:2015-12-27 02:40:44

标签: ffmpeg video-encoding libx264

我在ffmpeg中使用libx264对视频进行编码,我使用了以下配置。

enCodecContext->bit_rate = 300000;
enCodecContext->width = 80;
enCodecContext->height = 60;
enCodecContext->time_base = (AVRational) {1, 25};
enCodecContext->gop_size = 10;
enCodecContext->max_b_frames = 1;
enCodecContext->pix_fmt = PIX_FMT_YUV420P;
enCodecContext->qcompress = 0.6;
av_opt_set(enCodecContext->priv_data, "preset", "slow", 0);

但是当我使用avcodec_encode_video2致电enCodecContext时,我收到错误Input picture width (40) is greater than stride (0)

avcodec_encode_video2(enCodecContext, &filteredAVPacket, pFilteredAVFrame, &got_packet_ptr);

pFilteredAVFrame->widthpFilteredAVFrame->height分别为8060

配置libx264时是否遗漏了某些内容?如何为libx264编制视频进行可行配置?

1 个答案:

答案 0 :(得分:1)

x264很好。您必须为图像平面填写AVPicture.linestride变量。步幅描述了图像在内存中的布局方式。步幅必须至少与图像宽度一样大。在YUV 4:2:0的情况下,步幅必须至少是第二和第三平面上宽度的一半。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx