Maximale video-Auflösung mit getUserMedia
Ich versuche, höchste video-Auflösung wie möglich durch JS navigator.getUserMedia
. Ich weiß, über Zwänge, aber nicht wissen, wie man richtig in meinem Fall.
Das problem ist es sieht aus wie es gibt keinen Weg zu sagen "ich möchte ein video bei maximaler Auflösung". Anstatt also, ich bin versucht zu sagen, "ich will video nicht weniger als die ganz große Lösung".
Wenn ich versuche minWidth: 1600
Chrome gibt mir 1280×720 video (höchste mögliche für meine Kamera, glaube ich). Aber was ist, wenn Benutzer eine Kamera mit höherer Auflösung? Daher bitte ich um minWidth: 2048
video und Chrome gibt nur 640×480.
var constraints = {
video: {
optional: [
{minWidth: 2048}
]
}
};
Dies ist online-Beispiel: http://jsbin.com/kibeza/1/watch?js,Ausgabe
Und es ist tatsächlich ein problem: Chrome nicht weiß, math. Es denke, was 1600 ist größer als 2048. Ich kann nicht Fragen, für video "nicht weniger als 100500", weil in diesem Fall werde ich kommen standard mit geringer Auflösung. Ich kippe ask video "nicht weniger als einige sinnvolle kleine Lösung", denn es kann sein, Nutzer mit höherer Auflösung, und ich will eine höhere Auflösung.
- Haben Sie gesehen, dieser Fehler?
- das ist komisch, wenn ich eine Auflösung, die zu groß ist bekomme ich eine "ConstraintNotSatisfiedError" und kein video zurückgegeben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß ich noch nicht richtig beantworten, aber ich Tue das folgende:
Während einzelne
minWidth: 2560
Ausdruck setzt die Auflösung auf Standard, SerieminWidth
Ausdruck, der browser braucht immer maximale Auflösung auf getestete hardware.Verwenden:
Dadurch wird der browser mit der maximalen Auflösung von bis zu 4K. Funktioniert in Chrome, 63, Rand 41 und Firefox 58.
Unter Berufung auf MDN in Bezug auf die Nutzung von ideal:
Hatte ich abwechslungsreiche Erfolg mit der Festlegung
ideal
Abmessungen und versucht zu zwingen, die 'zurück' - Kamera.Immer noch ich habe nicht gefunden eine gute API, um die maximale video-Auflösung mit getUserMedia.
Aber hier bin ich teilen, meine Idee zu bekommen, maximal unterstützte video-Auflösung der das angeschlossene Gerät mit Binäre Suche Algorithmus und es funktioniert Super.
Hier sind die Schritte, um diese Arbeit zu tun,
um .
ändern Sie die Links und rechts basierend auf dem Ergebnis.
Hier bin ich teilen, meine Umsetzung:
Einfach anrufen Funktion FindMaximum_WidthHeight_ForCamera(). Beim Betrieb wird abgeschlossen sein, dann maximale video-Auflösung gespeichert werden, selectedWidth und selectedHeight Variablen. Hier bin ich auch anfügen der Ausgabe der Konsole für mein Gerät:
Habe ich getestet, diese Umsetzung mit Chrome Version 57.0.2987.110 (64-bit) und Logitech, Inc. Webcam C270. Aber ich denke diese Lösung sollte in jedem Szenario. Danke.
Stimme ich mit homm, seinen Ansatz gut funktioniert: https://jsfiddle.net/evpozdniakov/c84ksucw/
In meinem Fall Opera und Chrome bieten eine maximale Auflösung von 1280×720.
Firefox gibt 640×480 standardmäßig, aber Sie können verbessern, seine Auflösung sowie bis zu 1280×720. Hier gehen Sie:
{ video: { width: 9999, height: 9999 } }
wird Ihnen die höchstmögliche Auflösung. Siehe in diesem Zusammenhang AntwortKönnen Sie überprüfen, dieses Dienstprogramm zum überprüfen der verfügbaren Auflösungen Ihrer Geräte:
https://webrtchacks.github.io/WebRTC-Camera-Resolution/
Es ist nützlich für die Problembehandlung.
Hoffe, Sie finden es interessant!