大佬教程收集整理的这篇文章主要介绍了Electron 保存的 mp3 无法播放,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以将我的声音录制到一个 blob 中,我可以使用电子将它以 wav 格式保存到磁盘。
但由于 wav 文件很大,我想保存 mp3 文件,所以到目前为止我有这个:
const Buffer = require('Buffer');
const fs = require('fs');
const lamejs = require("lamejs");
let blob
let audioChunks = [];
let rec;
document.head.INNERHTML += '<audio ID="recordedAudio" crossorigin="anonymous"></audio>';
let recordedAudio = document.getElementByID('recordedAudio');
navigator.mediaDevices.getUserMedia({audio:truE}).then(stream => {
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
if(rec.state == "inactive") {
audioChunks.push(e.data);
blob = new Blob(audioChunks,{type:'audio/mpeg-3'});
recordedAudio.src = URl.createObjectURL(blob);
}
}
}).catch(e=>console.log(E));
setTimeout(() => {
console.log('start record');
rec.start();
},2000);
setTimeout(() => {
console.log('stop record');
rec.stop();
setTimeout(() => {
encodeMono();
},2500)
},8000);
function encodeMono() {
chAnnels = 1; //1 for mono or 2 for stereo
sampleRate = 44100; //44.1khz (normal mp3 sampleratE)
kbps = 128; //encode 128kbps mp3
mp3encoder = new lamejs.Mp3Encoder(chAnnels,sampleRate,kbps);
var mp3Data = [];
samples = new Int16Array(blob); // (get your data from the source you havE)
sampleBlockSize = 1152; //can be anything but make it a multiple of 576 to make encoders life easIEr
var mp3Data = [];
for (var i = 0; i < samples.length; i += sampleBlockSizE) {
sampleChunk = samples.subarray(i,i + sampleBlockSizE);
var mp3buf = mp3encoder.encodeBuffer(sampleChunk);
if (mp3buf.length > 0) {
mp3Data.push(mp3buf);
}
}
var mp3buf = mp3encoder.flush(); //finish wriTing mp3
if (mp3buf.length > 0) {
mp3Data.push(new Int8Array(mp3buf));
}
const mp3blob = new Blob(mp3Data,{type: 'audio/mp3'});
savefile();
async function savefile() {
const buffer = Buffer.from( await mp3blob.arrayBuffer() );
fs.writefile('./sources/audio.mp3',buffer,() => {
console.log('audio is saved!');
});
}
}
'./sources/audio.mp3' 文件将被写入磁盘但无法播放!我认为这是编码问题...我该如何解决这个问题?
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Electron 保存的 mp3 无法播放全部内容,希望文章能够帮你解决Electron 保存的 mp3 无法播放所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。