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
Ho provato, ma non ha funzionato, e a volte è andato in crash, ci riproverò e ti darò un feedback. Grazie –
Controlla la mia domanda modificata. Grazie :) –
Ho trovato il motivo per cui si è schiantato :) Grazie –