2015-08-21 17 views
5

Sto implementando il webrtc in un progetto Android e sono basato su questo esempio in github.Android WebRTC personalizza la vista remota e locale

Questo esempio utilizza la libreria libjingle. Questo è come il video di rendering è stato creato vista:

 // 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); 

mia domanda è come posso gestire per personalizzare il remoteRender e localRender, in modo che possa cambiarlo position nel GLSurfaceView e la sua larghezza e l'altezza

EDIT:

ho fatto un ascoltatore e ho provato questo:

@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); 
     } 
    } 

Quando do il valore 150 per la larghezza e l'altezza mi dà questo errore:

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 con la soluzione:

Quando stavo guardando mattm risposta ho capito che aveva ragione .

Mentre cercavo la mia eccezione, ho scoperto che si trattava di un'eccezione generata dalla libreria libjingle. Ho trovato questo pezzo di codice qui VideoRendererGui.java alla riga 368, 347 ho trovato la soluzione per le mie domande.

Quando si aggiunge l'altezza vista e la larghezza deve essere all'interno di questi intervalli basati su questo codice:

/** 
    * 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."); 
    } 

Così per tutto il tempo che seguo queste regole chiamando il metodo VideoRendererGui.update(... funzionerà perfettamente

grazie

risposta

3

E 'semplice come cambiare i campi

  • le coordinate:
    REMOTE_X, REMOTE_Y o LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING,
  • o le dimensioni: REMOTE_WIDTH, REMOTE_HEIGHT o LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING

Se si desidera cambiare il rendering una volta che sono stati creati gli oggetti, chiama VideoRendererGui.update(remoteRender, ...).

+0

Ho provato, ma non ha funzionato, e a volte è andato in crash, ci riproverò e ti darò un feedback. Grazie –

+0

Controlla la mia domanda modificata. Grazie :) –

+0

Ho trovato il motivo per cui si è schiantato :) Grazie –

Problemi correlati