我最终想做的是从用户的麦克风记录,并在他们完成后将文件上传到服务器。到目前为止,我已经成功地使用以下代码创建了一个元素的流:
var audio = document.getElementById("audio_preview");
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
navigator.getUserMedia({video: false, audio: true}, function(stream) {
audio.src = window.URL.createObjectURL(stream);
}, onRecordFail);
var onRecordFail = function (e) {
console.log(e);
}
我如何从这一点,记录到一个文件?
9条答案
按热度按时间wf82jlnq1#
有一个相当完整的录音演示可在:http://webaudiodemos.appspot.com/AudioRecorder/index.html
它允许您在浏览器中录制音频,然后为您提供导出和下载录制内容的选项。
您可以查看该页面的源代码以找到指向JavaScript的链接,但总结一下,有一个
Recorder
对象,它包含一个exportWAV
方法和一个forceDownload
方法。ssm49v7z2#
下面显示的代码版权归Matt Diamond所有,可在MIT许可下使用。原始文件在这里:
保存此文件并使用
mi7gmzs63#
更新现在Chrome也支持v47的MediaRecorder API。同样的事情要做的是使用它(猜测本机记录方法肯定会比变通方法更快),API真的很容易使用,你会发现关于如何为服务器上传一个blob的答案。
Demo-可以在Chrome和Firefox中工作,故意忽略了将blob推送到服务器.
Code Source
目前,有三种方法可以做到这一点:
1.作为
wav
[所有代码客户端,未压缩录制],可以查看--> Recorderjs。问题:文件太大,需要更多的上传带宽。1.作为
mp3
[所有代码客户端,压缩记录],可以查看--> mp3Recorder.问题:就我个人而言,我觉得质量不好,也有这个许可证的问题。1.作为
ogg
[客户端+服务器端(node.js
)代码,压缩录制,无限小时录制而不崩溃浏览器],你可以查看--> recordOpus,要么只客户端录制,要么客户端-服务器捆绑,选择是你的。ogg记录示例(仅限firefox):
Fiddle Demo用于ogg记录。
goqiplq24#
这是一个简单的JavaScript录音机和编辑器。你可以试试。
https://www.danieldemmel.me/JSSoundRecorder/
可以从这里下载**
https://github.com/daaain/JSSoundRecorder
olhwl3o25#
这个问题很老,许多答案在当前版本的浏览器中不受支持。我尝试使用简单的
html
、css
和js
创建音频记录器。我进一步在electron中使用相同的代码来制作一个跨平台应用程序。上面的代码可以在Windows 10、Mac、Linux中运行,当然,也可以在谷歌Chrome和火狐上运行。
6kkfgxo06#
您可以使用GitHub中的Recordmp3js来实现您的要求。您可以从用户的麦克风录制,然后将文件作为mp3。最后上传到你的服务器。
我在我的demo中使用了这个。已经有一个示例与源代码由作者在这个位置:https://github.com/Audior/Recordmp3js
demo在这里:http://audior.ec/recordmp3js/
但目前仅适用于Chrome和Firefox。
似乎工作得很好,很简单。希望这对你有帮助。
q1qsirdb7#
这里有一个gitHub项目可以做到这一点。
它以mp3格式记录浏览器中的音频,并自动将其保存到Web服务器。https://github.com/Audior/Recordmp3js
您还可以查看实现的详细说明:http://audior.ec/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/
7ivaypg98#
实时流式传输音频,无需等待录制结束:https://github.com/noamtcohen/AudioStreamer
这将传输PCM数据,但您可以修改代码以传输mp3或Speex
oug3syen9#
如果你只需要wav文件格式,你可以使用这个npm包,不需要做任何修改。https://www.npmjs.com/package/extendable-media-recorder