我在 ubuntu 上使用 libx264,编程使用 C。
我想设置 x264 编码器输出720P
。输入图像大小为1080P
。如何设置参数?
不知道是否设置了这两个参数:
param->vui.i_sar_width = ?;
param->vui.i_sar_height= ?;
或其他参数crop-rect
?
如果您希望输出视频为 720P,则必须先对每个帧进行下采样,然后再将其提供给 libX264.initilize 一个SwsContext ,该SwsContext在 ffmpeg 的 swsScale.h中可用,并将其用作转换器
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 是指向原始图像数据的指针。您的下采样图像数据将被复制到 x264_picture_t 类型的 picture_in 变量中
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 的视频。您也只需初始化转换器一次并一次又一次地使用它。你可以用你自己的方式优化它。