Как нарисовать текстуру openGL, полученную с помощью RemoteVideoTrack? - PullRequest
0 голосов
/ 30 ноября 2018

На webrtc я просто делаю это, чтобы получить удаленный поток:

  mRemoteVideoTrack = getRemoteVideoTrack();
  mRemoteVideoTrack.setEnabled(true);
  mRemoteVideoTrack.addSink(mRemoteProxyVideoSink);

  private VideoTrack getRemoteVideoTrack() {
    for (RtpTransceiver transceiver : mPeerConnection.getTransceivers()) {
      MediaStreamTrack track = transceiver.getReceiver().track();
      if (track instanceof VideoTrack) {
        return (VideoTrack) track;
      }
    }
    return null;
  }    

и получаю идентификатор текстуры в mRemoteProxyVideoSink:

  private class RemoteProxyVideoSink implements VideoSink {

    @Override
    synchronized public void onFrame(VideoFrame frame) {
       VideoFrame.TextureBuffer textureBuffer = (VideoFrame.TextureBuffer) frame.getBuffer();
       mTextureID = textureBuffer.getTextureId();
    }

  }

ПРИМЕЧАНИЕ : onFrame не запущен в основном потоке пользовательского интерфейса , а внутри фонового потока (не знаю, имеет ли это значение).Позже в основном потоке пользовательского интерфейса, когда я рисую на поверхности самый первый восстановленный текстурный фрейм, я получаю такой результат:

enter image description here

, но при следующем обновлении (т. е. onFrame событие), когда я пытаюсь снова нарисовать текстуру (ее идентификатор текстуры не изменился), то у меня есть такой результат:

enter image description here

Каждая последующая окраска текстуры делает картинку более розовой и розовой.со временем картинка становится абсолютно розовой, без видимой формы:

enter image description here

есть идеи, что не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...