程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Electron 保存的 mp3 无法播放大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Electron 保存的 mp3 无法播放?

开发过程中遇到Electron 保存的 mp3 无法播放的问题如何解决?下面主要结合日常开发的经验,给出你关于Electron 保存的 mp3 无法播放的解决方法建议,希望对你解决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,请注明来意。