Code Monkey home page Code Monkey logo

mp3-recorder's People

Contributors

devin87 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mp3-recorder's Issues

录制的mp3在网页上播放没声音

浏览器是Chrome
录制的mp3在网页上播放没声音,保存下来后直接用播放也是没声音
测试过64,192,256kpbs都一样
使用电脑客户端的一些音乐播放器可以播放录制的mp3

找了一首歌曲mp3用播放是有声音的

对比歌曲mp3跟录音mp3最大的区别:歌曲mp3是双声道,录音mp3是单声道,不确定有没有关系

关于码率不能低于64kbps的解决办法

看了大佬博客园文章后,copy代码在使用,64kbps录的太大了,和那种一秒1kb的差距太大,8kbps能达到1kb但声音差太别明显,16kbps又小音质还行。

但64kbps以下确实是有无声的问题,并且是表现成不同设备没声的码率还不是固定的。

调试发现lamejs输出的采样率是通过函数 optimum_samplefreq 推荐出来的,而我们提供的源音频采样率并不一定会成为最终结果采样率:

  1. 对于>64kbps的,推荐的采样率类似于Math.min(48000hz, input_sampleRate),结果就是输出采样率和输入采样率是一样的。
  2. 对于<64kbps的,推荐的采样率就五花八门了,结果就是输出和输入的采样率不一致,lamejs就要对我们提供的输入数据进行采样,进而有可能导致最终结果没有声音。

对于为什么进行采样了的会有可能没有声音,可能是lamejs哪里代码精简错了(比如尝试使用ABR,虽然有代码,但是被删的差不多了),具体原因未能查明,但问题的位置算是找到了。

修改lamejs,不让他进行推荐输出码率,可以修改optimum_samplefreq相关的地方,或者直接增加一个设置:

function Mp3Encoder(channels, samplerate, kbps) {
	......
	gfp.in_samplerate = samplerate;
	
	//增加下面这行
	gfp.out_samplerate = samplerate;
	......
}

固定输出码率为我们的输入码率,测试8-64kbps码率都有声音。

ps: 固定码率后,我们调用encodeBuffer时音频数据参数的采样率必须和我们给lamejs设置的采样率一致。so,如果我们录音得到的PCM数据是48khz,要32khz的mp3,那么我们调用encodeBuffer前就要把PCM数据抽样成32khz,然后传给lamejs进行编码。不然声音会被拉长或压扁。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.