加速x264编码(使用libavcodec的C ++代码)

时间:2012-09-04 05:32:10

标签: x264 libavcodec libx264

我正在尝试捕获Windows屏幕(连续屏幕截图)并将其编码为x264。为此,我使用libavcodec提供的avcodec_encode_video2函数。但是,这需要大量的时间。对于单个帧的编码,时间在25-1800毫秒之间波动。

我尝试过在屏幕上录制视频的1080p和720p。

这些是我正在使用的设置。这是在Windows 7,win32发布版本和4 GB RAM上测试的。

bit_rate = 2000,width = 1920,height = 1080 qmin = 0,qmax = 0,max_b_frames = 0,frame_rate = 25,pixel_format = YUV 4:4:4。 其余设置是默认设置,使用avcodec_get_context_defaults3()获取。

一组250帧中20帧(连续且随机选择)的样本数据(以毫秒为单位)。 {121,106,289,126,211,30,181,58,213,34,245,50,56,364,247,171,254,83,82,229}

对于应用程序,它必须至少以15 fps的速度捕获。有人可以帮忙判断是否可以使用任何选项来提高帧速率。我需要对无损编码进行编码,但我对文件大小的增加持开放态度。

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题的简单解决方案是直接使用libx264而不是通过avcodec。这使您可以更好地控制x264,从而提高编码速度。使用avcodec,它还可以执行一些不需要的处理。使用libx264可以避免这种情况。

故事的道德,直接使用x264 API。