На 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](https://i.stack.imgur.com/5DOSZ.jpg)
, но при следующем обновлении (т. е. onFrame
событие), когда я пытаюсь снова нарисовать текстуру (ее идентификатор текстуры не изменился), то у меня есть такой результат:
![enter image description here](https://i.stack.imgur.com/ZxWBU.jpg)
Каждая последующая окраска текстуры делает картинку более розовой и розовой.со временем картинка становится абсолютно розовой, без видимой формы:
![enter image description here](https://i.stack.imgur.com/o1rad.jpg)
есть идеи, что не так?