2017-02-09 23 views
1

여러 독립적 인 프로세스를 사용하여 방대한 양의 라이브 비디오를 linux/X11의 화면으로 스트리밍하는 방법을 고려 중입니다.리눅스를 사용하여 대규모 라이브 비디오 스트리밍

처음에는 OpenGL/GLX 및 openGL 텍스처로 프로젝트를 시작했지만 막 다른 골목이었습니다. 이유 : "컨텍스트 전환". 여러 개의 컨텍스트를 사용하여 여러 개의 독립된 다중 프로세스가 빠른 속도의 텍스처로 조작 할 때 (특히 nvidia) 성능이 떨어지는 것으로 나타났습니다. 이것은 충돌을 초래 정지 등

(다음 스레드를 참조하십시오 https://lists.freedesktop.org/archives/nouveau/2017-February/027286.html)

마침내에서 XVideo로 전환을 그리고 매우 잘 작동하는 것 같다. 내 초기 테스트 결과에 따르면 Xvideo는 비디오 덤핑을 OpenGL보다 10 배 이상 효과적으로 처리하고 충돌을 일으키지 않습니다. 하나는이 ~ 10 vlc 클라이언트에서 720p @ 25fps로 실행하고 Xvideo 및 OpenGL 출력을 모두 시도하는 것을 보여줄 수 있습니다 (모든 전체 화면 표시를 기억하십시오).

그러나, 나는에서 XVideo가 후드, 사용 의심하고, OpenGL을, 그래서에서 XVideo 및 GLX 모두 X11의 확장 모듈은

.. 나는이 권리를 얻고 있는지 알아 보자 :하지만,

(A)에서 XVideo 통해 덤핑 비디오 :

  • 에서 XVideo가 디바이스 포트와 화면 전체를 고려하고 직접 조작은

  • ,691,363 (는 X11의 확장되고, 이러한 신 같은 능력을 갖는다)210
  • .. 그래픽 드라이버의 단일 컨텍스트 만 필요합니다. 특정 1.

  • 프로세스에게 컨텍스트 2 개 요청에서 XVideo 서비스 이용에서 XVideo 화면의 특정 부분으로 관리 .. 특정 윈도우 1.

  • 프로세스 컨텍스트 1 개 요청에서 XVideo 서비스를 호출 할 수

      ,691 : 창 .. 문맥에서 XVideo 1.

    GLX 및 OpenGL 질감 통해 "수동"

    (B) 비디오 덤핑 덤핑을 사용하여 화면의 일정 부분으로 관리

  • 프로세스 1은 glx에서 컨텍스트를 요청하고 컨텍스트 1을 가져 와서 텍스처를 덤프하기 시작합니다.

  • 프로세스 2는 glx에서 컨텍스트를 요청하고 컨텍스트 2를 가져 와서 텍스처를 덤프하기 시작합니다.

나는이 권리를 얻고 있습니까?

상황 (A)를 직접 사용하여 OpenGL을 사용하는 방법이 있습니까?
.. GLX를 완전히 삭제해야 할 수도 있습니다. 약간 하드 코어가되기 시작합니다.

+2

당신은 후드에서 OpenGL을 사용했다 아래에 그에서 XVideo 가정에서 틀렸다. XVideo는 X11 프로토콜에 대한 독립적 인 확장이며 3D 래스터 화 지원이없는 GPU에서 완벽하게 지원할 수 있습니다. 그러나 효율성을 위해 XVideo 대신 VDPAU를 사용해야합니다. 또한 단일 프로세스에서 단일 OpenGL 컨텍스트를 사용하지 못하게하는 요인은 무엇입니까? 별도로 처리 (예 : ffmpeg 사용)하여 완벽하게 디코딩 할 수 있으며 파이프를 통해 디코딩 된 데이터를 표시 프로세스로 전달할 수 있습니다. – datenwolf

+0

vdpau에 관해서는, 이제는 메사에 의해 오픈 소스 드라이버에서 지원되지만, 여전히 약간 녹색 인 것처럼 보입니다. Nvidia 독점 드라이버의 vdpaus는 허용 된 동시 vdpau 디코더의 수에서부터 h264 프로파일 허용에 이르기까지 모든 종류의 인위적인 제한을 가지고 있습니다 (그들은 당신에게 그들의 비싼 값 비싼 gfx 카드를 팔지 않아도됩니다) - 심지어 최악의 적에도 독점 NVIDIA vdpau를 권장하지 않습니다! .. 당신은 얼마나 많은 vdpau 스레드를 디코딩 할 수 있는지, 그리고 어떤 h264 프로파일/레벨을 가지고 있는지 결코 알 수 없을 것입니다. –

+0

OpenGL 텍스처 덤핑을위한 단일 "마스터"프로세스 사용에 관해서도이 가능성을 생각했지만 공유 메모리를 사용했습니다. 디코딩 된 비트 맵을 보내면 파이프로 여러 소스에서 720p @ 25fps가 나오고 커널에서 처리하는 파이프가 아닙니까? 이런 능력을 충분히 발휘할 수 있을까요? –

답변