如何在linux上输入1080P时设置x264编码器输出720P

时间:2014-03-08 09:14:32

标签: x264 libx264

我在ubuntu上使用libx264,编程使用C.

我想设置x264编码器输出720P。输入图像大小为1080P如何设置参数?

我不知道是否设置了两个参数:

param->vui.i_sar_width = ?; 
param->vui.i_sar_height= ?;

或其他参数crop-rect

1 个答案:

答案 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的视频。你也需要只转换一次转换器并反复使用它。你可以用自己的方式优化它。