как прочитать файл MP3 для обработки звука в Delphi?

Когда я хочу обработать звук на уровне байтов, я всегда конвертирую его в формат .wav, а затем выполняю обработку. Например, в моем последнем проекте я пытался сгенерировать своего рода специальное изображение волны моего аудиофайла, чтобы использовать его в видеоклипе. Затем я преобразовал свой файл .mp3 в файл .wav (моно, 8 бит, 6 кГц) с помощью онлайн-инструмента, а затем программно создал изображение волновой формы.

Теперь я хочу иметь возможность выполнять обработку файла .mp3 напрямую без преобразования, как в приведенном ниже коде:

aFrom := 60000;   // From 00:01:00.000
aLength := 20000; // 20 Second 
aChannels := 1;   // mono
aBitsPerChannel := 8;
aFreq := 6000;

aBufSize := Open_MP3_As('d:\Until The Last Moment.mp3',
  aBuffer, aFrom, aLength,
  aChannels, aBitsPerChannel, aFreq);

for i := 0 to aBufSize - 1 do
begin
  // Processing aBuffer[i]
end;

это просто пример того, что у меня на уме. Как видите, метаданные и детали файла .mp3 для меня не важны.

Это было бы очень полезно, потому что я могу внедрить эту возможность в свои звуковые инструменты и позволить пользователю использовать мои инструменты намного быстрее и проще. Я знаю, что это может быть очень сложный код, потому что в первый раз файл .mp3 должен быть преобразован в файл .wav (с заданными параметрами), затем он должен удалить заголовок, нарезать его и поместить в aBuffer. и вернуть количество выборок в aBuffer.


person Mohammad Ahmadzadeh    schedule 20.08.2018    source источник
comment
Существует ТОННА библиотек/компонентов, легко доступных для обработки аудио/медиа данных. Вы уже осмотрелись? Вы пробовали что-нибудь из них?   -  person Remy Lebeau    schedule 21.08.2018
comment
Знаете ли вы, что я могу использовать их так же просто, как код, который я написал? или я должен бороться с некоторыми сложными (и, возможно, не бесплатными) компонентами, и тогда я увеличиваю размер своего проекта.   -  person Mohammad Ahmadzadeh    schedule 21.08.2018
comment
Чем меньше работы вам нужно сделать, тем больше библиотеки вы будете использовать. Это, вероятно, означало бы, что большая библиотека используется меньшим проектом. В любом случае, сторонние рекомендации не по теме.   -  person Sertac Akyuz    schedule 21.08.2018
comment
Да, вы правы, но я ищу верный ответ, может ли кто-нибудь порекомендовать БЕСПЛАТНУЮ библиотеку, с которой я могу сделать то же самое?   -  person Mohammad Ahmadzadeh    schedule 21.08.2018
comment
@MohammadAhmadzadeh Просто зайдите и проверьте некоторые аудиобиблиотеки, которые позволяют воспроизводить mp3 с возможностью поиска. Почему с возможностью поиска? Потому что в большинстве случаев такие библиотеки также имеют возможность отображать грубое визуальное представление волновой формы, что вам и нужно. К сожалению, у меня нет опыта ни с одним из бесплатных. Но у меня есть некоторый опыт работы с аудиобиблиотекой BASS (un4seen.com), которая имеет такие возможности и многое другое. Но это не бесплатно.   -  person SilverWarior    schedule 21.08.2018


Ответы (1)


Это может решить мою проблему очень быстро, я надеюсь, что это поможет:

используйте эту ссылку для запуска этой командной строки:

ffmpeg.exe -ss 60 -t 20 -y -i input.mp3 -ac 1 -ar 6000 -acodec pcm_u8 output.wav

это преобразует файл .mp3 в .wav с заданными параметрами.

Тогда у вас есть файл .wav, просто откройте его, пропустите заголовок волны, а затем прочитайте его в aBuffer.

Вот и все.

person Mohammad Ahmadzadeh    schedule 21.08.2018
comment
Как это может быть ответом, когда вы прямо сказали в своем вопросе: Теперь я хочу иметь возможность выполнять обработку файла .mp3 напрямую без преобразования...? - person Tom Brunberg; 22.08.2018
comment
Вы пишете, что это конвертация, но не мной вручную. В моем обычном программировании мне приходилось конвертировать файл mp3 в файл wav с помощью Adobe Audition, чтобы иметь возможность его открыть. Но теперь мое приложение ищет mp3-файл и автоматически (и быстро) конвертирует его в фоновом режиме. Хорошо, что до того, как я нашел это решение, я не мог написать программу для работы с mp3-файлами, но теперь я могу писать программа, которая может обрабатывать не только файлы mp3, но и все известные файлы ffmpeg, такие как mkv, mp4, wma, .... - person Mohammad Ahmadzadeh; 31.08.2018