首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Linux的大规模实时视频流

使用Linux的大规模实时视频流
EN

Stack Overflow用户
提问于 2017-02-09 14:51:39
回答 1查看 860关注 0票数 1

我正在考虑用不同的方式使用多个独立进程将大量的实时视频流到linux/X11的屏幕上。

我最初是用openGL/GLX和openGL纹理开始这个项目的,但那是一个死胡同。原因:“语境转换”。结果发现(尤其是nvidia),当几个(独立的多个)进程使用多个上下文以快速的速度处理纹理时,性能很差。这会导致崩溃、结冰等。

(请参阅以下线程:https://lists.freedesktop.org/archives/nouveau/2017-February/027286.html )

我终于变成了Xvideo,而且它似乎运行得很好。我的初步测试表明,show处理视频倾倒的效率是openGL的10倍,而且不会崩溃。我们可以用720 p@25 and演示这个正在运行的10 vlc客户机,并尝试Xvideo和OpenGL输出(记住要把所有的屏幕都放进去)。

然而,我怀疑Xvideo使用的是,在引擎盖下,openGL,所以让我们看看我是否正确。

X视频和GLX都是X11的扩展模块,但是:

(A)通过X视频倾倒视频:

  • XVideo将整个屏幕视为一个设备端口,并直接操作它(它具有类似上帝的能力,是对X11的扩展)。
  • 。。所以它只需要一个来自图形驱动程序的上下文。让我们称它为上下文1。
  • Process 1请求某个窗口的X视频服务。X视频使用上下文1将其管理到屏幕的某一部分。
  • Process 2请求某个窗口的X视频服务。X视频使用上下文1将其管理到屏幕的某一部分。

(B)通过GLX和openGL纹理倾销“手动”倾倒视频:

  • Process 1从glx请求上下文,获取上下文1并开始使用它来转储纹理。
  • Process 2从glx请求上下文,获取上下文2并开始使用它来转储纹理。

我说得对吗?

有什么方法可以直接使用openGL来实现情境(A)?

。。一个人可能不得不完全放弃GLX,这开始有点硬的核心。

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 17:10:34

已经有一段时间了,但我终于把它整理好了,使用了OpenGL纹理和多线程。这似乎是最佳的方法:

chart.html

(免责声明:我做到了)

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

https://stackoverflow.com/questions/42139815

复制
相关文章

相似问题

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