使用libav-tools实时屏幕抓取和流式传输

时间:2014-12-28 22:27:23

标签: live-streaming libav avconv screen-grab

对于我的学校项目,我必须在实时中将屏幕抓取从1个站点(即服务器)流向另一个站点(即客户端),两者都运行linux(ubuntu)。 我正在使用libav-tools(avconv作为服务器端的编码器,avplay作为客户端的播放器)

avconv使用x11grab格式从屏幕抓取。

我的问题是:avconv需要几秒钟才能输出编码视频。这种等待对于RT来说太长了。

我已经尝试过流式传输到localhost以避免网络对速度的影响,似乎avconv负责漫长的等待。 此外,流媒体视频文件似乎更快,几乎立即。

该项目在C ++中实现,并在fork中执行avconv。

有关缩短程序的任何建议吗?

1 个答案:

答案 0 :(得分:0)

这很可能是由于内部缓冲造成的。通常有一个缓冲区,默认情况下太大了。这是因为没有延迟不是大多数软件的主要关注点,他们更关心的是错误的连接和那些问题,这就是缓冲区的用途。

请参阅https://libav.org/avconv.html,搜索“nobuffer”或“-analyzeduration”或“-rtbufsize”或“-max_delay”或“-fpsprobesize”或“rtmp_buffer”(如果您使用rtmp)或其他人并尝试运气。

总会有明显的延迟,特别是如果您使用像h264这样的编码进行传输。但是几秒钟它不需要在受控环境中。你应该可以把它降低到几分之一秒。