2009-02-27 2 views
1

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

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

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

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

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

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

Спасибо!

Guillaume.

+0

преобразование в WAV/PCM/другой сырой формат нужно ли быть программным или будет ли полезная программа/программа сделать это извне? Я предполагаю, что первый, поскольку последний поставил бы этот вопрос в области, не связанной с программированием ;-) –

ответ

5

Вопрос сводится к: что вы пытаетесь выполнить?

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

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

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

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

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

Был аналогичный вопрос в то время назад, Getting started with programmatic audio, где я опубликовал ответ на некоторые основные способы манипулирования звуком, такие как усиление, изменение скорости воспроизведения и выполнение некоторой работы с БПФ.

+0

Вы, сэр, потрясающие! Я просмотрел ваш ответ, и это выглядит потрясающе! Я собираюсь проверить это завтра. Спасибо! –

+0

Спасибо, рад, что я мог бы помочь! :) – coobird

1

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

1

Лоты:

http://www.mp3-tech.org/programmer/decoding.html

Выберите свой яд ...

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

-Adam

1

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

0

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

+0

Привет, добро пожаловать в SO. –

Смежные вопросы