0

我想将麦克风音频从 Web 浏览器流式传输到 AWS S3。得到它的工作

this.recorder = new window.MediaRecorder(...);
this.recorder.addEventListener('dataavailable', (e) => {
  this.chunks.push(e.data);
});

然后当用户单击停止将块new Blob(this.chunks, { type: 'audio/wav' })作为多部分上传到 AWS S3 时。

但问题是,如果录制时间长 2-3 小时,则可能需要更长的时间,用户可能会在等待录制完成上传之前关闭浏览器。

有没有一种方法可以在运行时将网络音频直接流式传输到 S3?

我尝试过但无法获得工作示例的事情:

  1. Kineses 视频流,看起来它仅用于多个客户端之间的实时流,我必须编写自己的客户端,然后将其保存到 S3。
  2. 考虑使用 kinesis data firehose,但无法从浏览器中找到任何客户端数据生成器。
  3. 甚至尝试使用 aws lex 或 aws ivs 查找任何资源,但我认为它们对于我的用例来说只是过度工程。

任何帮助将不胜感激。

4

1 回答 1

0

timeslice调用时start()可以设置参数MediaRecorder。然后MediaRecorder将发出与参数长度大致匹配的块timeslice

正如您已经提到的,您可以使用 S3 的分段上传功能上传这些块。

请注意,如果要录制 WAV 文件,则需要像可扩展媒体记录器这样的库,因为没有浏览器支持开箱即用。

于 2022-02-07T20:50:27.280 回答