Я попробовал быструю и простую вещь:
У меня есть два пакета -> app.gui
и app.login
. В моем классе входа я использую mainview.fxml
из app.gui
, поэтому я сделал это в login.fxml
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../gui/MainView.fxml"));
И он работает:)
Есть ли какой-нибудь способ получить более прямой доступ к видеоконтенту MediaStreamTrack?
blockquote>Не в реальном времени, нет. W3C обсуждал добавление такого API в рабочих, но сегодня его не существует.
API-интерфейс MediaRecorder приближается: он может предоставлять вам большие двоичные данные с интервалом в несколько миллисекунд (см. start (timeslice) ), но не в реальном времени.
Это кажется очень неэффективным ...
blockquote>Современные браузеры имеют фоновые потоки, которые выполняют тяжелую работу, например, уменьшение масштаба, поэтому я бы предостерег от преждевременной оптимизации. В общем, вещи замедляются только тогда, когда биты массово открываются для основного потока JavaScript. Поэтому я меньше беспокоюсь о разрешении вашей камеры, чем о размере вашего холста.
Если вам нужно всего несколько пикселей для яркости, сделайте ваш холст очень маленьким. Накладные расходы должны быть низкими. Например, :
video.srcObject = await navigator.mediaDevices.getUserMedia({video: true}); await new Promise(r => video.onloadedmetadata = r); const ctx = canvas.getContext('2d'); requestAnimationFrame(function loop() { ctx.drawImage(video, 0, 0, 16, 12); requestAnimationFrame(loop); });
<canvas id="canvas" width="16" height="12"></canvas>
Если все еще возникают проблемы, я бы уменьшил частоту кадров.