2013-06-12 7 views
5

Okej, w zasadzie wprowadziliśmy na naszą stronę internetową jRecorder, która umożliwia nam przechwytywanie dźwięku w formacie WAV.Kiedy kodowanie do MP3 w ShineRecorder, kodowanie zatrzymuje się, gdy głośność jest zbyt wysoka

Teraz po przechwytywaniu używamy ShineMP3Encoder do konwersji WAV na MP3 (aby zaoszczędzić na rozmiarze pliku). Wszystko działa dobrze.

Wiele osób napotkało problem polegający na tym, że jeśli nagrany poziom dźwięku jest zbyt wysoki, kodowanie MP3 zostanie całkowicie zatrzymane, a plik stanie się uszkodzony/krótki. Podczas wykonywania tego z WAV wydaje się, że WAV nie obchodzi, jak głośno jest nagrany dźwięk i będzie z przyjemnością odtwarzał go w niezmienionym stanie.

Doceniam moje pytanie: niewiarygodnie niszowa, ale po kilku dniach uderzania głową w ścianę jest to moja jedyna opcja.

Na co warto, to jest ActionScript że była używana do zapisu (jest bog standardowa implementacja ShineMP3):

//recorder.output is outputted from jRecorder 
mp3Encoder = new ShineMP3Encoder(recorder.output); 
mp3Encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete); 
mp3Encoder.start(); 
+0

próbuje odtworzyć błąd. Czy możesz podać plik wav? Co sprawia, że ​​myślisz o jego wysokim poziomie audio? –

+0

Czy słuchasz również ErrorEvent podczas kodowania? –

+0

@PlasticSturgeon Aby go odtworzyć, możesz po prostu wdmuchać do mikrofonu tak mocno, jak tylko potrafisz. Próbowałem słuchać ErrorEvent, ale bezskutecznie. – mattytommo

Odpowiedz

0

Jedną z możliwości jest to, że kodowanie działa wolniej niż pętli na tych torach, powodując błąd. Spróbuj spowolnić działanie enkodera i sprawdź, czy to naprawi błąd.

W sposobie start() z ShineMP3Encoder.as wymienić

timer = new Timer(1000/30); 

z

timer = new Timer(150); 

linii 37, która jest w bieżącej bazie kodu.

+0

Pozdrawiam za odpowiedź, ale myślę, że to faktycznie powoduje błąd podczas kodowania, ale nie jest wywoływany wewnątrz kodu ActionScript. Spróbuję tego i zobaczę, co się stanie. – mattytommo