Android WebRTC personalizar la vista remota y local
Estoy implementando el webrtc en un proyecto de Android y estoy basado en esta muestra en github .
Este ejemplo utiliza la biblioteca libjingle. Así se crea la vista de reproducción de vídeo:
- Utilice Video chat en segundo plano como Skype usando WebRTC en Android
- Creación de una aplicación mediante la demostración WebRTC AppRtc
- WebRTC llega a Android WebView? ¿Cuando?
- Webrtc librerías estáticas en Android
- WebRTC con PeerJS - Funcionará en aplicaciones Android e IOS
// 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);
Mi pregunta es cómo puedo manejar personalizar el remoteRender
y localRender
, de modo que pueda cambiarlo position
en el GLSurfaceView
y su anchura y altura
EDITAR:
He hecho un oyente y he intentado esto:
@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); } }
Cuando doy valor 150 para el ancho y la altura me da este error:
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 solución:
Cuando estaba mirando a la respuesta mattm
entendí que él tenía razón.
Mientras que estaba buscando para mi excepción encontré que era una excepción lanzada de la biblioteca de libjingle
. He encontrado este pedazo de código aquí VideoRendererGui.java en línea 368, 347 Encontré la solución para mis preguntas.
Al agregar la altura y el ancho de la vista tiene que estar dentro de estos rangos basados en este código:
/** * 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."); }
Así que mientras siga estas reglas llamando al método VideoRendererGui.update(...
funcionará perfectamente
Gracias
- Volumen de audio de Android webRTC
- Echo y ruido en el sonido webRTC android
- WebRTC android ejemplo, XMPP o Http Peer Connection?
- DataChannel.state () devuelve siempre CONNECTING webRTC Android
- Alternativas de comunicación en tiempo real nativas a WebRTC
- WebView WebRTC no funciona
- ERROR al compilar Web RTC
- Crear un VideoTrack WebRTC con un Capturer "personalizado" en Android con libjingle
Es tan simple como cambiar los campos
- las coordenadas:
REMOTE_X
,REMOTE_Y
oLOCAL_X_CONNECTING
,LOCAL_Y_CONNECTING
, - O las dimensiones:
REMOTE_WIDTH
,REMOTE_HEIGHT
oLOCAL_WIDTH_CONNECTING
,LOCAL_HEIGHT_CONNECTING
Si desea cambiar la representación una vez que los objetos han sido creados, llame a VideoRendererGui.update(remoteRender, ...)
.
- Regeneración del "código de autorización único" para Google+ en Android
- Cómo encontrar los lugares más cercanos basados en lat actual y largo usando Parse API (parse.com) en android