与其他浏览器相比,为什么iOS Safari上的“ mediaDevices.getUserMedia”较慢?

时间:2019-05-16 06:56:25

标签: javascript html mobile-safari getusermedia mediadevices

我正在开发一个Web应用程序,该应用程序记录用户的语音输入。由于某种原因,在ios野生动物园上花费大量时间才能通过mediaDevices.getUsearMedia获取要记录的媒体流。我创建了以下测试页来衡量不同浏览器之间的时间延迟。如果有人能对此提供真知灼见,我将不胜感激。

IOS野生动物园-600到800ms

Chrome桌面-4毫秒

Chrome Android-40到60ms

<!DOCTYPE html>
<html>
<body>

 <h1 style="margin: 100px">get user media time test</h1>
 <div width="300px" height="300px" style="margin: 100px">
     <button id="btn" style="height:100px; width:250px; font-size:25px;">call getUserMedia</button>
 </div>

 <script>
    var btn = document.getElementById("btn");
    btn.onclick = myFunction;                

    function myFunction() {
    var time1 = new Date().getTime();
    navigator.mediaDevices.getUserMedia({ video:false ,audio: true})
        .then(function(stream) {
            var time2 = new Date().getTime();
            var diff = time2-time1;
            console.log("delay "+ diff + "ms") 
        })
        .catch(function(err) {
            console.log('Error gettingUserMedia: %s', err);
        });
    }   
 </script>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

每个浏览器都以完全不同的方式实现getUserMedia。尽管要记住getUserMedia是一个非常复杂的操作,但可以理解的是,比较每个浏览器的响应时间时,时间差异很小。

getUserMedia的实际作用是:

访问权限设置►检查特定站点的权限►提示用户批准(如果需要)►访问硬件►对stream元素进行建模►回调。

每个步骤都由每个浏览器的开发人员实施。较小的实施更改可能会导致较小的响应时间间隔。

还请记住,尽管Google Chrome浏览器更为宽容,但iOS仍严格遵守用户隐私政策,这可能会导致响应时间更长。