在ShineRecorder中编码为MP3时,如果音量太高,编码将停止

mat*_*mmo 5 actionscript-3 jrecorder shinemp3encoder

好的,基本上我们在我们的网站上实现了jRecorder,它使我们能够以WAV格式捕获音频.

现在,在捕获之后,我们使用ShineMP3Encoder将该WAV转换为MP3(以节省文件大小).一切正常.

许多人遇到了一个问题,即如果录制的音频电平太高,MP3编码将完全停止并且文件将变得损坏/短路.当使用WAV执行此操作时,WAV似乎并不关心录制的音频有多大,并且会很乐意按原样播放.

我很欣赏我的问题,这是一个令人难以置信的利基,但是在我的头撞墙几天之后,这是我唯一的另一种选择.

对于它的价值,这是用于记录的ActionScript(它是沼泽标准的ShineMP3实现):

//recorder.output is outputted from jRecorder
mp3Encoder = new ShineMP3Encoder(recorder.output); 
mp3Encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete);
mp3Encoder.start();
Run Code Online (Sandbox Code Playgroud)

Pla*_*eon 0

一种可能性是编码运行速度比这些轨道上的循环慢,从而导致错误。尝试让编码器运行得更慢,看看是否可以修复错误。

在ShineMP3Encoder.as的start()方法中替换

timer = new Timer(1000/30);
Run Code Online (Sandbox Code Playgroud)

timer = new Timer(150);
Run Code Online (Sandbox Code Playgroud)

这是当前代码库中的第 37 行。