Захват видео в мобильном браузере со скоростью 60 кадров в секунду - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь захватить видео со скоростью 60 кадров в секунду из веб-приложения в Chrome Android. У меня есть соответствующее ограничение video.frameRate для вызова getUserMedia. Chrome распознает настройку frameRate и сообщает с помощью настройки видеодорожки, что он снимает со скоростью 60 кадров в секунду, но визуально видео только 30 кадров в секунду, а не 60. На том же устройстве через стандартное приложение Android Камера снимает плавно Видео со скоростью 60 кадров в секунду с тем же разрешением, что и я пробую через веб-приложение.

Я тестирую это с Chrome Android 84 на Pixel 3a. Я также тестировал на других телефонах с разрешениями, которые эти телефоны поддерживают со скоростью 60 кадров в секунду, и, несмотря на это, захватывает только со скоростью 30 кадров в секунду.

Ниже приведен пример кода, демонстрирующего это поведение. этот? Или захват со скоростью 60 кадров в секунду в настоящее время невозможен с Chrome Android?

<html>
<head>
    <title>frameRate</title>
    <script>
        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            var constraints = {
                video: {
                    width: { exact: 1920 },
                    height: { exact: 1080 },
                    facingMode: { ideal: "environment" },
                    frameRate: { exact: 60 }
                }
            };
            navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
                var video = document.getElementById('video');
                video.srcObject = stream;
                video.play();
                document.getElementById('frameRate').innerHTML = 'frameRate: ' + stream.getTracks()[0].getSettings().frameRate;
            });
        }
    </script>
</head>

<body>
    <p id="frameRate"></p>
    <video id="video" width="1920" height="1080"></video>
</body>
</html>
...