与其他浏览器相比,为什么“mediaDevices.getUserMedia”在 ios safari 上速度较慢?

Mur*_*lli 4 html javascript mobile-safari getusermedia mediadevices

我正在开发一个记录用户语音输入的网络应用程序。由于某种原因,在 ios safari 上需要花费很多时间才能通过 mediaDevices.getUsearMedia 获取用于录制的媒体流。我创建了以下测试页面来测量不同浏览器之间的时间延迟。如果有人能对此有深入的了解,我将非常感激。

IOS safari - 600 至 800 毫秒

Chrome 桌面版 - 4 毫秒

Chrome Android - 40 至 60 毫秒

<!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>
Run Code Online (Sandbox Code Playgroud)

Kob*_*uek 5

每个浏览器getUserMedia以完全不同的方式实现。虽然请记住这getUserMedia是一个非常复杂的操作,但在比较每个浏览器的响应时间时存在微小的时间差异是可以理解的。

\n\n

实际上getUserMedia做的是:

\n\n

访问权限设置 \xe2\x96\xba 检查特定站点的权限 \xe2\x96\xba 提示用户批准(如有必要) \xe2\x96\xba 访问硬件 \xe2\x96\xba 元素建模 \xe2\x96\ streamxba打回来。

\n\n

每个步骤都是由每个浏览器的开发人员实现的。微小的实施变化可能会导致微小的响应时间差距。

\n\n

另请记住,虽然 Google Chrome 更加宽容,但 iOS 对用户隐私采取了严格的政策,这可能会导致更长的响应时间。

\n