[libx264 @ 200dc880]输入图片宽度(320)大于步幅(0)
问题出在视频格式不正确。
libx264 编码要求输入源的格式是YUV420.可以利用Ffmpeg swscale方法转换源的视频格式为需要的视频
简单来说,只是将视频播放到页面上使用RGB格式就够了。
但是如果要进行编码就一定要将视频格式转为YUY420P。
int numByte = avpicture_get_size(AV_PIX_FMT_YUV420P, avcodec_context->width, avcodec_context->height);
uint8_t * buffer = (uint8_t *)av_malloc(numByte*sizeof(uint8_t));
//初始化缓冲区,把压缩的数据存入到 bufferRGB 中并给 pictureRGB 设置相应的值,
avpicture_fill((AVPicture *)pictureYUV,buffer,AV_PIX_FMT_YUV420P, avcodec_context->width,avcodec_context->height);
//转换规则
SwsContext *swscontentYUV=nullptr;
//转换规则设置:用于转码(缩放)的参数,转之前的宽高,转之后的宽高,格式等
swscontentYUV=sws_getContext(avcodec_context->width,avcodec_context->height,avcodec_context->pix_fmt,