首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux上输入为1080 p时如何设置x264编码器输出720 p

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

Stack Overflow用户
提问于 2014-03-08 09:14:31
回答 1查看 630关注 0票数 0

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

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

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

代码语言:javascript
复制
param->vui.i_sar_width = ?; 
param->vui.i_sar_height= ?;

或另一个参数crop-rect

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 10:12:20

如果你想要你的输出视频是720 p,你必须先对你的每一帧进行降采样,然后再交给which 264。初始化一个SwsContext,这是swsScale.h of ffmpeg中提供的,并用作转换器。

代码语言:javascript
复制
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类型。

代码语言:javascript
复制
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的视频。此外,您只需要初始化转换器一次,并使用它一次又一次。你可以用你自己的方式来优化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22267396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档