Когда я хочу обработать звук на уровне байтов, я всегда конвертирую его в формат .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.