Dekodowanie dźwięku z postaci mp3.

0

Witam!
Ponownie piszę w sprawie dźwięków.
Tym razem potrzebuje zdekodować plik dźwiękowy w z postaci mp3 - oczywiście programowo. Mam takie pytanie, czy ktoś z Was już coś takiego robił?
Może ktoś ma jakąś dokładną dokumentacje co do budowy pliku, bo nie wiem jak tego szukać na google, wyskakują mi programy, źródła. Mnie nie interesują już gotowe programy/źródła tylko opis na podstawie którego można "zrozumieć" plik mp3.

0

O ile dobrze kojarzę, mp3 jest opatentowaną technologią, więc specyfikacja nie jest darmowa. Więc albo spojrzysz w kody które masz, albo kupisz specyfikację (ISO 11172-3)

0

Projekt LAME jest opensource.
(LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. )

http://lame.sourceforge.net/

0

Google pokazuje np dokument: http://cutebugs.net/files/mpeg-drafts/11172-3.pdf
Referencyjna implementacja kodera to dist10 (chociaż enkoder jest bardzo nieefektywny).

0

Tutaj masz opis enkodera i implementacje w MATLABie:
http://is.rice.edu/~welsh/elec431/index.html
A tu jeszcze jedna:
http://www.petitcolas.net/fabien/software/mpeg/

0
donkey7 napisał(a)

Google pokazuje np dokument: http://cutebugs.net/files/mpeg-drafts/11172-3.pdf
Referencyjna implementacja kodera to dist10 (chociaż enkoder jest bardzo nieefektywny).

Cena tego dokumentu to ponad 620zł ;).

0

0 zł. Właśnie go czytam.

Proponuje Lame.

Ja miałem taki problem że robiłem radio na bazie ShoutCast'a i za pomocą biblioteki bass zgrywałem dźwięk z mikorfonu (format PCM), konwertowałem go w locie za pomocą Lame i wysyłałem ShoutCastem w "eter". W Winampie było slychać to co zgrywałem. Całkiem znośnie to działało. Kompa niewiele obciążało, chociaż wolałbym plik mp3.pas :-)


Napisałeś dekodowanie :-)

Przy dekodowanu potrzebujesz tylko biblioteki Bass.dll i funkcji BASS_StreamCreateFile;
W helpie idzie to tak: "BASS has built-in support for MPEG, OGG, WAV and AIFF files."
Aby skorzystać robisz tak:
chan := BASS_StreamCreateFile(FALSE, PChar('Zucchero- Wonderful Life.mp3'),0 ,0 , BASS_STREAM_DECODE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
gdzie chan: HSTREAM;

1 użytkowników online, w tym zalogowanych: 0, gości: 1