[英]Converting WAV to any compressed audio format in client-side JavaScript
我正在录制来自getUserMedia({audio:true});
音频getUserMedia({audio:true});
在浏览器中使用Recorder.js然后将其导出为WAV文件,因为这是库提供的唯一选项。
1分20秒的文件大14.1 MB。 我需要将音频上传到服务器,我需要快速完成。 如何以任何其他压缩格式转换WAV音频以降低文件大小?
我不介意转换为:
如果现在没办法转换为这些格式中的任何一种,我如何压缩客户端上的WAV文件?
PS:我做了很多搜索,找到了在JS中转换WAV的任何东西,但一无所获。 libmp3lame.js无法在Chrome中运行。
谢谢!
我已经制作了一个录音机,可以直接从浏览器中记录到MP3,结合了RecorderJS和libmp3lame.js
你可以在这里找到gitHub项目: https : //github.com/nusofthq/Recordmp3js
以及对实施的更详细解释: http : //nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/
你真正想要的是mediaStream“Recording API”,目前正在进行中。 在可用之前,我建议在C / C ++源代码上使用emscriptem,并考虑在webworker中运行它以避免阻止UI和其他选项卡。
我遇到了同样的问题,提出了一个非常快速和肮脏的解决方案:
进一步的英特尔见文档zip.js
至少这会减小很多尺寸,文件大约小于75%,因此1:4压缩
更新:也许看看这个: https : //webrtc.github.io/samples/
这是谷歌开发的Chrome和Firefox聊天应用程序,我假设有一种CC-License
我有一个类似的问题(也使用recorder.js)并设法解决使用精湛的videoconverter.js项目,其中包括使用emscripen的ffmpeg端口到Javascript。 这方面的缺点是ffmpeg.js文件大约是25Mb。
我修改了exportWAV
中的现有exportWAV
函数,以返回WAV(用于HTML5 <audio>
播放)和包含编码的MP2文件的Blob:
function encodeWAV(samples) {
var buffer = new ArrayBuffer(44 + samples.length * 2);
var view = new DataView(buffer);
/* ... various writing methods */
return { wavdata: new Blob([buffer], { type: "audio/wav" }), mp2data: ffmpeg_convert(buffer) };
}
function ffmpeg_convert(buffer) {
console.log("starting mp2 conversion");
var args = "-i input -f mp2 output.mp2";
var results = ffmpeg_run({
arguments: args.split(" "),
files: [
{
data: new Uint8Array(buffer),
"name": "input"
}
]
});
if (results) {
var file = results[0];
console.log("File recieved", file.name, file.data);
return new Blob([file.data], { type: "audio/mpeg" });
}
return null;
}
此方法可用于将WAV编码为ffmpeg的libavcodec
任何编解码器
我能够使用opus.js实现压缩,
你可以在这里找到我的实现: recordOpus ,但有一个catch,我的是与服务器端耦合,我使用node.js
服务器....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.