我在ubuntu上使用libx264,编程使用C.
我想设置x264编码器输出720P
。输入图像大小为1080P
。 如何设置参数?
我不知道是否设置了两个参数:
param->vui.i_sar_width = ?;
param->vui.i_sar_height= ?;
或其他参数crop-rect
?
答案 0 :(得分:1)
如果您希望输出视频为720P,则必须先对每帧进行下采样,然后再将其提供给libX264.initilize swsContext , swsScale.h 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 type
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);
现在您可以将图像数据传递给编码器,您将获得720P的视频。你也需要只转换一次转换器并反复使用它。你可以用自己的方式优化它。