可以'在rails环境中使用recorderjs录制麦克风输入

Can't record microphone input by using recorderjs in rails environment

本文关键字:recorderjs 输入 麦克风 环境 rails 可以      更新时间:2023-09-26

我想在Rails项目中记录用户的声音。

所以我尝试使用[AudioRecorder][1],但我做不到。我使用python -m SimpleHTTPServer检查了示例HTML是否正常工作。

然后我把audiodisplay.js、main.js、recorder.js和recorderWorker.js复制到app/assets/javascripts/recorder/目录中。

并将示例HTML复制到app/views/static_pages/home.html.erb,而不需要不必要的标签:

<style>
...styles for the page
</style>
<div id="viz">
  <canvas id="analyser" width="1024" height="500"></canvas>
  <canvas id="wavedisplay" width="1024" height="500"></canvas>
</div>
<div id="controls">
  <img id="record" src="img/mic128.png" onclick="toggleRecording(this);">
  <a id="save" href="#"><img src="img/save.svg"></a>
</div>

图形会随着周围声音的变化而变化,因此录音似乎在工作,但在停止声音后,下载按钮保持透明。

在控制台中,我可以获得audioRecorder实例,但audioRecorder.exportWAV(doneEncoding)返回undefined

> audioRecorder
< Recorder {context: AudioContext, node: ScriptProcessorNode}
> audioRecorder.exportWAV(doneEncoding)
< undefined

我做错了什么?

我发现了recorder.js在其函数中使用变量的问题。

var WORKER_PATH = 'js/recorderjs/recorderWorker.js';

它未能读取文件。

为了解决这个问题,我遵循了这个答案。

  • 将recorderWorker.js放入/public/javascript中
  • 重写recorder.js 中的路径名

    var WORKER_PATH="<%=javascript_PATH'recorderWorker.js'%>";

  • recorder.js重命名为recorder.js.erb