Ed *_*ese 8 javascript android google-chrome html5-video
我正在尝试从 Chrome Android 中的网络应用程序以 60 FPS 的速度捕获视频。我video.frameRate为调用设置了适当的约束getUserMedia。Chrome 识别frameRate设置并通过视频轨道设置报告它正在以 60 FPS 捕获,但在视觉上视频只有 30 FPS 而不是 60。在同一设备上通过股票 Android 相机应用程序它以相同的分辨率捕获流畅的 60 FPS 视频因为我正在尝试通过网络应用程序。
我正在 Pixel 3a 上使用 Chrome Android 84 对此进行测试。我还在其他手机上测试了这些手机支持 60 FPS 的分辨率,而不管它只能以 30 FPS 捕获。
下面是演示此行为的示例代码。
我怎样才能做到这一点?或者 Chrome Android 目前无法以 60 FPS 进行捕捉?
<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>
Run Code Online (Sandbox Code Playgroud)
它不使用硬件加速视频编码,因此由于编码受到可用 CPU 资源的限制,因此无法以此速率进行捕获。通过一些基本测试,Pixel 3a 的所有 4 个核心都达到了 100%,导致视频捕捉时断时续。
MediaRecorderAndroid Chrome 上一般只支持 VP8 和 VP9 视频编解码器进行编码。我用/sf/answers/4525937811/上的代码对此进行了测试。由于 Chrome Android 的行为有点奇怪,它似乎错误地报告它支持格式中的类型,${type};codecs:${codec}因此我删除了这些类型。
硬件方面,Pixel 3a采用了高通骁龙670。从规格来看,它仅支持HEVC(h.265)格式的视频拍摄。
综上所述,Chrome Android 仅支持 VP8 或 VP9 格式的视频捕获,但大多数 Android 硬件不为这些格式提供硬件加速,导致捕获质量较差。
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |