2013-05-29 15 views
13

Tak więc pracuję nad tym projektem HTML5, w którym konwertuję aplikację na iOS na wersję internetową. Towarzyszącą częścią tworzenia treści aplikacji jest nagrywanie dźwięku, które próbuję replikować w JavaScript bez użycia wtyczek; do tej pory udało mi się nagrać audio z getUserMedia() i przekształcić je w WAV dzięki Recorder.js.Koduj dźwięk z getUserMedia() na .OGG w JavaScript

Teraz jednak jestem trochę zagubiony. Obecnie mam dwa oddzielne widoki, jeden do nagrywania zawartości i jeden do odtwarzania, ale nie wiem jak uzyskać dźwięk wyeksportowany z Recorder.js do mojego ładunku JSON do odtwarzania (chciałbym uniknąć zmuszania serwera wgrać lub pobrać klienta).

Więc domyślam się, że moje konkretne pytanie brzmi: jak wziąć obiekt BLOB (coś o czym prawie nic nie wiem) zrobiony przez Recorder.js i przekształcić go w surowe dane, lub w jakiś sposób wysłać plik przez JSON?

UPDATE: Zdecydowałem się spróbować użyć narzędzia speex.js (https://github.com/jpemartins/speex.js) zakodować .ogg (znacznie mniejszy niż WAV). Jednak nie jestem pewien, jak z niego korzystać; strona demo nie działała dla mnie, a próba wywołania funkcji .encode() obiektu Speex nie zakodowała danych, a ja otrzymują tylko zera w polach obiektu. Czy ktokolwiek wie o jakichkolwiek zasobach, w których mogę nauczyć się korzystać z tego typu narzędzi?

+0

Obecnie próbuję również ustawić coś z getUsetMedia i wypróbowałem kilka samouczków, ale wciąż czasami jest to dość trudne. Co rozumiesz przez ładunek JSON do odtwarzania? Czy masz tag '

+0

A jeśli chcesz przekonwertować obiekt typu blob na tekst, możesz rzucić okiem na [FileReader] (https://developer.mozilla.org/en-US/docs/Web/API/FileReader?redirectlocale=en-US&redirectslug = DOM% 2FFileReader # readAsText% 28% 29) obiektu. Metody tego przyjmują argument Blob jako "argument" i "przekonwertuj" go na tekst, który myślę. Ale nie jestem pewien, jak go użyć dokładnie, czy nawet robi to, co myślę, że robi. Nie miałem jeszcze okazji przyjrzeć mu się bliżej. – basilikum

+0

Dzięki, właśnie patrzyłem na FileReadera. Co rozumiałem przez "dane nieprzetworzone" były rzeczywistymi danymi zawartymi w pliku .WAV wyeksportowanym przez rejestrator; ponieważ ostatecznie powinno być możliwe przesyłanie między iPadem a przeglądarką, bardzo dobrym rozwiązaniem byłoby wysłanie pliku .WAV. Problem polega na tym, że nie wiem, jak wysłać rzeczywiste dane pliku .WAV, ponieważ po prostu mam obiekt typu blob z typem i długością, bez widocznych danych. – twchapman

Odpowiedz

0

Jest biblioteka (licencjonowana na MIT), która powinna działać, wydaje mi się, że widziałem tę dokładną bibliotekę używaną do zapisywania plików OGG ze strumienia audio getUserMedia na stronie internetowej niedawno. Jak przez mgłę pamiętał nazwę biblioteki, ale myślę, że to jest jeden:

https://github.com/streamproc/MediaStreamRecorder/blob/master/AudioStreamRecorder/MediaRecorder.js

Cały projekt na GitHub: https://github.com/streamproc/MediaStreamRecorder/

Ponieważ wydaje się tak trudne do osiągnięcia tego celu, to może być co najmniej Warto spojrzeć, aby zrozumieć pojęcia - ale powiedziałbym, że jest to raczej zaawansowany javascript, z którym mamy tu do czynienia ...

+1

W rzeczywistości ta biblioteka nie koduje pliku Ogg, justs zapisuje falę i używa typu mime 0gg. Aby zakodować plik de ogg, lepszym rozwiązaniem jest skorzystanie z https://www.webrtc-experiment.com/ffmpeg/wav-to-ogg.html – Lelis718

Powiązane problemy