我在ubuntu上使用libx264,编程使用C。
我想设置x264编码器输出720P。输入图像大小为1080P。如何设置params?
我不知道是否设置了这两个参数:
param->vui.i_sar_width = ?;
param->vui.i_sar_height= ?;或另一个参数crop-rect
发布于 2014-03-08 10:12:20
如果你想要你的输出视频是720 p,你必须先对你的每一帧进行降采样,然后再交给which 264。初始化一个SwsContext,这是swsScale.h of ffmpeg中提供的,并用作转换器。
SwsContext* convertContext = sws_getContext(parameters.i_width,parameters.i_height, PIX_FMT_BGR24, parameters.i_width,parameters.i_height,PIX_FMT_YUV420P, SWS_FAST_BILINEAR, NULL, NULL, NULL);在您编码帧的每次调用中,使用上述转换器转换您的帧。这里,image.data是指向原始图像数据的指针。您的下采样图像数据将被复制到picture_in变量中,即x264_picture_t类型。
int srcStride = parameters.i_width * 3;
x264_picture_alloc(&picture_in, X264_CSP_I420, parameters.i_width, parameters.i_height);
sws_scale(convertContext, &(image.data), &srcStride, 0, parameters.i_height, picture_in.img.plane, picture_in.img.i_stride);现在,您可以将图像数据传递给编码器,您将获得720 p的视频。此外,您只需要初始化转换器一次,并使用它一次又一次。你可以用你自己的方式来优化它。
https://stackoverflow.com/questions/22267396
复制相似问题