2

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

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

这些是我正在使用的设置。这是在具有 4 GB RAM 的 Windows 7、win32 版本构建上测试的。

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 的速度捕获。有人可以帮忙判断是否可以使用任何选项来提高帧速率。我需要无损编码,但我愿意增加一些文件大小。

提前致谢。

4

1 回答 1

1

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

讲道理,直接使用x264 API。

于 2012-12-20T06:13:50.263 回答