Kotlin
Erstellen eines benutzerdefinierten Renderers (MyRenderer)
Jetzt werden Sie einen benutzerdefinierten Renderer erstellen, der die Rahmendaten lädt und sie an OpenGL-Texturen weitergibt. Er wird verwendet, um den Fragment-Shader mit invertierten Farben anzuwenden.
Nachfolgend finden Sie eine Skizze; den Shader-Code werden Sie später anpassen.
- Erstellen einer Kotlin-Klasse MyRenderer (kann intern zu InvertedColorsVideoRenderer sein)
static class MyRenderer implements GLSurfaceView.Renderer {
private int viewportWidth;
private int viewportHeight;
ReentrantLock frameLock = new ReentrantLock();
Frame currentFrame;
public void displayFrame(Frame frame) {
frameLock.lock();
if (currentFrame != null) {
currentFrame.destroy(); // Disposes previous frame
}
currentFrame = frame;
frameLock.unlock();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Initialize shaders, textures, etc.
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
GLES20.glViewport(0, 0, width, height);
viewportWidth = width;
viewportHeight = height;
}
@Override
public void onDrawFrame(GL10 gl) {
// Upload YUV frame → textures
// Draw using shaders
// Implementation of YUV → RGB shader pipeline
// using inverted color math
}
}
- Untersuchen wir die
displayFrameMethode. Es ist wichtig zu beachten, dass der Frame, den der SDK an dieRendererimonFrameMethode ist jetzt eine Eigenschaft derRenderer. Es ist Aufgabe dieser Klasse, den Rahmen zu zerstören, wenn er nicht mehr benötigt wird. Deshalb zerstören wir den vorherigen Rahmen, wenn ein neuer Rahmen in dieRenderer
public void displayFrame(Frame frame) {
frameLock.lock();
if (currentFrame != null) {
currentFrame.destroy(); // Disposes previous frame
}
currentFrame = frame;
frameLock.unlock();
}
Grundlegendes Video-Rendering
Erfahren Sie, wie Sie einen benutzerdefinierten Videorenderer in Kotlin verwenden, um eine Schwarz-Weiß-Version eines Videostreams mit dem Vonage Video Android SDK anzuzeigen.
Schritte
1
Einführung2
Erste Schritte3
Ein neues Projekt erstellen4
Hinzufügen des Android-SDK5
Einrichten der Authentifizierung6
Beantragung von Genehmigungen7
Erstellen des Renderers für invertierte Videos8
Erstellen eines benutzerdefinierten Renderers (MyRenderer)9
Veröffentlichen eines Streams in der Sitzung10
Verbinden des benutzerdefinierten Renderers mit Publisher/Subscriber11
Ausführen der App12
Schlussfolgerung