【发布时间】:2019-12-26 00:47:35
【问题描述】:
我目前正在使用 HTML5/JS 开发一个音乐应用程序,并尝试使用 MediaStream Recording API 实现最低延迟。该应用程序允许用户使用相机和麦克风录制音乐。当摄像头和麦克风打开时,代码将允许用户听到和看到自己。
目前我有:
const stream = await navigator.mediaDevices.getUserMedia(
{
video: true,
audio: {
latency: {exact: 0.003},
}
}
);
// monitor video and audio (i.e. show it to the user)
this.video.srcObject = stream;
this.video.play();
如果我降低延迟要求,我会收到 OverConstrained 错误。延迟还可以(比默认值更好),但对于在录制时听到自己的声音来说仍然不是很好。当您弹奏吉他并在耳机中听到它时,会有轻微的、可察觉的延迟。
我可以在此处进行其他优化以获得更好的结果吗?我不太关心视频和音频的质量,所以降低分辨率、采样率等可能会有所帮助?
【问题讨论】:
-
除了通过 JavaScript 处理延迟之外,考虑将来自麦克风的传入音频数字化并物理移动该数据所需的时间也很重要。永远不会有零延迟,特别是如果您使用 WASAPI 而不是 ASIO 之类的东西(这不是您可以通过浏览器控制的东西)。
标签: javascript html media mediastream