En mi página nw.js, tengo un iframe con la opción nwfaketop y cargo un sitio web entre dominios que necesito capturar como transmisión de video, incluido el audio.
Sin embargo, el uso de getDisplayMedia() no muestra el contenido de la ventana iframe.
este es mi index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="demo.js"></script> <link rel="stylesheet" type="text/css" href="demo.css" > </head> <body> <iframe src="{some other website}" nwfaketop nwdisable></iframe> </body> </html>este es el sitio web cargado dentro de iframe
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="demo.js"></script> <link rel="stylesheet" type="text/css" href="demo.css" > </head> <body> <div class="screen-share-demo"> <video id="screen-share" autoplay></video> <div class="tools"> <button onclick="chooseDesktopMedia()">capture iframe</button> </div> </div> </body> </html> y esta es la función chooseDesktopMedia() :
function chooseDesktopMedia(){ if(nw.Screen.Init){ nw.Screen.Init(); } nw.Screen.chooseDesktopMedia(["screen"],function(streamId){ if(streamId) { var conf = { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: streamId, maxWidth: 1920, maxHeight: 1080 }, optional: [] }; console.log("[nw.chooseDesktopMedia] stream id:" + streamId); showScreenShare({audio: false, video: conf}); } }) } function showScreenShare(conf){ var ve = document.getElementById("screen-share"); navigator.mediaDevices.getUserMedia(conf) .then(function(stream){ var url = window.URL.createObjectURL(stream); ve.src = url; }) .catch(function(e){ console.log(e); alert(e); }); } También estoy usando --disable-web-security y --no-sandbox
Este ejemplo le muestra el contenido de la parte seleccionada de su pantalla. Haga clic en el botón Iniciar captura para comenzar.
Iniciar captura Detener captura
Tronco: