Извлечение необработанного аудио / сигнала из MP3 - PullRequest
1 голос
/ 27 февраля 2009

Этот вопрос был у меня в голове несколько лет, и я так и не нашел ответа на этот вопрос.

Что я хотел бы сделать, это извлечь фактическую форму волны / PCM из файла MP3, чтобы я мог воспроизвести его с помощью звуковой карты (конечно).

В идеале я бы экспериментировал с некоторыми эффектами DSP.

Первым делом я заглянул в LAME, но я не нашел ничего подходящего для декодирования MP3 в программах или подобных вещах.

Поэтому я спрашиваю, где я мог бы найти что-то подобное.

Какой язык мне использовать? Я думал о Си, но, возможно, есть языки программирования, которые бы справились с этой задачей более эффективно.

Спасибо!

Гийом.

Ответы [ 6 ]

5 голосов
/ 27 февраля 2009

Вопрос сводится к следующему: чего вы пытаетесь достичь?

Из описания вашего вопроса о декодировании MP3 и воспроизведении его на звуковой карте звучит так, как будто вы пытаетесь сделать медиаплеер.

Однако, если вы намереваетесь поиграться с эффектами DSP, то, похоже, вопрос скорее в обработке звука, а не в декодировании MP3. в этом случае, вероятно, поиск написания плагинов для существующих медиаплееров (таких как Windows Media Player и Winamp ) был бы самым простым путем к тому, чего вы пытаетесь достичь.

Честно говоря, научиться писать собственный декодер с нуля - это не просто проблема программирования, а математическая проблема, поэтому использование существующих библиотек - это путь. Общение с операционной системой или библиотеками, такими как DirectSound, для вывода звука кажется ненужной работой. Я чувствую, что работа над подключаемыми модулями для существующих плееров была бы хорошей идеей, если только ваша цель не состоит в том, чтобы создать собственный медиаплеер.

Если вы действительно хотите воспроизвести аудиоданные, то, вероятно, декодируйте MP3 в несжатый PCM с помощью любого MP3-декодера, а затем манипулируйте им на выбранном вами языке, чтобы достичь цели, связанной с эффектами со звуком.

Выбор языка будет зависеть от того, собираетесь ли вы напрямую взаимодействовать с библиотеками декодирования MP3 или можете ли вы просто использовать необработанный аудиовход, что позволит вам использовать практически любой язык по вашему выбору.

Некоторое время назад был похожий вопрос, Начало работы с программным звуком , где я опубликовал ответ о некоторых основных способах управления звуком, таких как усиление, изменение скорости воспроизведения и выполнение некоторой работы с FFT.

2 голосов
/ 27 февраля 2009

libmpg123 должно сработать.

1 голос
/ 27 февраля 2009

Это действительно зависит от того, на какой платформе вы программируете и что вы хотите делать с кодом. Если вы работаете в Windows, вы должны обратить внимание на windows media формат sdk или DirectShow . Они оба должны иметь возможность декодировать mp3-файлы в виде необработанного сигнала. На Mac я бы ожидал, что Quicktime будет иметь такую ​​же способность. Другие уже предложили исходный код для Linux / с открытым исходным кодом.

1 голос
/ 27 февраля 2009

Лоты:

http://www.mp3 -tech.org / программист / decoding.html

Собери свой яд ...

Кроме того, LAME декодирует MP3 (проверьте параметр --decode), так что вы можете найти что-то интересное в этом источнике.

-Adam

1 голос
/ 27 февраля 2009

Я использую Windows Media SDK не для этой цели, но я почти уверен, что есть зацепки, позволяющие перехватывать аудиопоток или преобразовывать MP4 в несжатый WAV. Я использовал C ++.

0 голосов
/ 23 января 2011

Я бы порекомендовал взглянуть на Cubase и Wavelab, так как оба будут конвертировать MP3 в WAV и т. Д. И позволят вам поиграть с формой волны

...