2017-07-13 1 views
0

La demande est que la sauvegarde d'une image vidéo dans l'appel vidéo. J'ai fait une démo qui prend une capture d'écran via la méthode "onDrawFrame" de GLSurfaceView. Mais quand j'utilise le webrtc, il a son propre moteur de rendu "VideoRendererGUI". Et quand je veux le surcharger, je trouve qu'il ne peut pas être ignoré. le code de la pièce principale:WebRTC pour Android: VideoRendererGUI prend une capture d'écran dans l'appel vidéo

vsv = (GLSurfaceView) findViewById(R.id.glviewchild_call); 
    vsv.setPreserveEGLContextOnPause(true); 
    vsv.setKeepScreenOn(true); 

    VideoRendererGui.setView(vsv, new Runnable() { 
     @Override 
     public void run() { 
      init(); 
     } 
    }); 

Et si vous avez une autre façon de prendre une capture d'écran, vous pouvez également partager avec moi. Merci beaucoup!

Répondre

0

Je suis désolé de dire en raison de l'indisponibilité de toile et d'autres installations dans Android Il n'est pas possible de capturer la capture d'écran par programmation en utilisant WebRTC. On peut esquiver cette situation en animant l'interface utilisateur de l'application et en capturant la capture d'écran manuellement, en la stockant à l'emplacement configuré et en l'échangeant avec l'autre partie.

+0

Merci Gaurav! Puis-je utiliser le ffmpeg pour résoudre ce problème? Parce que maintenant j'ai utilisé l'interface utilisateur "GLSurfaceView" de l'application, mais cela ne fonctionne pas. – fancyT

+1

J'ai trouvé une autre solution! Tout d'abord via webrtc, je peux obtenir le I420frame dans la méthode 'RenderFrame'. Ensuite, je convertis le I420frame en YuvImage. Enfin, j'utilise la méthode YuvImage 'compressToJpeg' pour le convertir en image jpeg. – fancyT