我有网络应用程序(类似于卡拉OK),用户可以将其声音录制在乐器上。
录制后用户播放录制内容。在这里,我使用网络音频API播放<audio>
标签和语音。要在播放/暂停时同步两个音频我像这样计算时间
pausedAt = Date.now() - startedAt;
startedAt = Date.now() - pausedAt;
这很好用。问题是当用户使用音频标签上的滑块向前/向后移动时。我正在考虑像这样的解决方案
ontimeupdate
事件,停止语音,然后使用startAt(currentTime)
其中currentTime是音频标签中的乐器演奏。由于api中没有seekTo函数,我必须停止然后启动音频。有没有更好的解决方案?
我面临的第二个问题是寻求音频标签不顺畅。如果我随意点击进度条有时它不起作用。当我在开发人员工具窗口中看到网络选项卡时,我看到了图像中显示的内容。它发出大约600个请求和一些86 MB数据下载,而文件大小小于10 MB。
答案 0 :(得分:2)
您真的应该使用Web Audio API来执行此操作。永远不会给你精确的同步,它将依赖于流媒体搜索 - 这将导致额外的下载,如你所见。只需通过XHR和decodeAudioData加载歌曲,并提供自己的播放控件。