2015-08-21 8 views
5

Ich bin die Umsetzung der webrtc in einem Android-Projekt und ich bin auf dieser Probe in github basiert.Android WebRTC anpassen remote und lokale Ansicht

In diesem Beispiel wird die libjingle-Bibliothek verwendet. Dies ist, wie das Video rendern Sicht erstellt wird:

 // Create video renderers. 
     VideoRendererGui.setView((GLSurfaceView)videoView, new Runnable() { 
      @Override 
      public void run() { 
       createPeerConnectionFactory(); 
      } 
     }); 
     remoteRender = VideoRendererGui.create(
       REMOTE_X, REMOTE_Y, 
       REMOTE_WIDTH, REMOTE_HEIGHT, scalingType, false); 
     localRender = VideoRendererGui.create(
       LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING, 
       LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, true); 

Meine Frage ist, wie kann ich die remoteRender und localRender, anpassen zu verwalten, so dass ich es position im GLSurfaceView und

seine Breite und Höhe ändern kann EDIT:

ich habe einen Zuhörer gemacht, und ich habe versucht, diese:

@Override 
    public void onWidthHeightChange(int width, int height) { 
     VideoRendererGui.update(remoteRender, 
       REMOTE_X-width, REMOTE_X-height, 
       REMOTE_WIDTH-width, REMOTE_HEIGHT-height, scalingType, false); 
     if (iceConnected) { 
      VideoRendererGui.update(localRender, 
        LOCAL_X_CONNECTED, LOCAL_Y_CONNECTED, 
        LOCAL_WIDTH_CONNECTED, LOCAL_HEIGHT_CONNECTED, 
        ScalingType.SCALE_ASPECT_FIT, true); 
     } else { 
      VideoRendererGui.update(localRender, 
        LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING, 
        LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, true); 
     } 
    } 

Wenn ich Wert geben sowohl 150 für Breite und Höhe es gibt mir diese Fehlermeldung:

08-21 14:34:01.621 7636-7636/org.appspot.apprtc E/AppRTCDemoActivity﹕ Fatal error: glUseProgram: GLES20 error: 1281 
    java.lang.RuntimeException: glUseProgram: GLES20 error: 1281 
      at org.webrtc.GlUtil.checkNoGLES2Error(GlUtil.java:48) 
      at org.webrtc.GlShader.useProgram(GlShader.java:123) 
      at org.webrtc.GlRectDrawer.drawOes(GlRectDrawer.java:132) 
      at org.webrtc.VideoRendererGui$YuvImageRenderer.draw(VideoRendererGui.java:371) 
      at org.webrtc.VideoRendererGui$YuvImageRenderer.access$800(VideoRendererGui.java:131) 
      at org.webrtc.VideoRendererGui.onDrawFrame(VideoRendererGui.java:722) 
      at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1522) 
      at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239) 

EDIT 2 mit der Lösung:

Als ich in mattm Antwort suchen verstand ich, dass er Recht hatte .

Während ich nach meiner Ausnahme suchte, stellte ich fest, dass es sich um eine Ausnahme handelte, die aus libjingle Bibliothek geworfen wurde. Ich fand dieses Stück Code hier VideoRendererGui.java in Zeile 368, 347 Ich fand die Lösung für meine Fragen.

Wenn die Höhe der Ansicht hinzugefügt und Breite es innerhalb dieser Bereiche auf diesem Code basiert sein muss:

/** 
    * Creates VideoRenderer.Callbacks with top left corner at (x, y) and 
    * resolution (width, height). All parameters are in percentage of 
    * screen resolution. 
    */ 
    public static YuvImageRenderer create(
     int x, int y, int width, int height) { 
    // Check display region parameters. 
    if (x < 0 || x > 100 || y < 0 || y > 100 || 
     width < 0 || width > 100 || height < 0 || height > 100 || 
     x + width > 100 || y + height > 100) { 
     throw new RuntimeException("Incorrect window parameters."); 
    } 

So, solange ich diese Regeln Aufruf der Methode folgen VideoRendererGui.update(... perfekt funktionieren

dank

Antwort

3

Es ist so einfach wie das Ändern der Felder

  • die Koordinaten:
    REMOTE_X, REMOTE_Y oder LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING,
  • oder die Abmessungen: REMOTE_WIDTH, REMOTE_HEIGHT oder LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING

Wenn Sie die Wiedergabe ändern möchten, sobald die Objekte erstellt wurden, Anruf VideoRendererGui.update(remoteRender, ...).

+0

Ich habe das versucht, aber es hat nicht funktioniert, und manchmal ist es abgestürzt, ich werde es erneut versuchen und Ihnen Feedback geben. Danke –

+0

Überprüfen Sie meine bearbeitete Frage. Danke :) –

+0

Ich habe den Grund gefunden, warum es abgestürzt ist :) Danke –

Verwandte Themen