Yo lo llamo
navigator.mediaDevices.getUserMedia({video: true, audio: false, width: 640, height: 480})En el escritorio, esto devuelve la resolución especificada. En retrato móvil (específicamente Safari iOS) esto devuelve video de 480x640 en la primera llamada de getUserMedia, que es el comportamiento esperado.
Mi aplicación está estructurada para que uno pueda hacer clic fuera de la aplicación y hacer clic para reanudarla nuevamente en un navegador.
El "clic fuera" activa este fragmento de código
stream_global.getTracks().forEach(function(track) { track.stop(); });stream_global se establece como tal:
navigator.mediaDevices.getUserMedia( {video: true, audio: false} ).then(function(stream) { stream_global = stream; // and the rest of the functionY el "currículum" activa la misma llamada getUserMedia con los mismos parámetros.
navigator.mediaDevices.getUserMedia({video: true, audio: false, width: 640, height: 480})Cuando desencadeno estos eventos, video.videoWidth y video.videoHeight alternarán de manera confusa entre los valores de 640x480 y 480x640 respectivamente, sin ningún cambio de orientación. Lo sé con certeza porque agrego estos valores (video.videoWidth, video.videoHeight) al elemento ap como HTML interno cada vez que llamo a getUserMedia. A veces, getUserMedia devolverá una de estas resoluciones un par de veces seguidas y luego cambiará. Empecé a observar este comportamiento hace un par de días, y aunque no puedo saber cuándo comenzó exactamente, definitivamente no estaba allí hace aproximadamente un año.
Este comportamiento es extremadamente confuso para mí, y cualquier ayuda es apreciada.
Como referencia, este es el adaptador.js que uso