Я постараюсь нарисовать некоторые общие шаги, которые вы можете выполнить:
Вам нужно будет распаковать ваши mp3-файлы в необработанный звук.В зависимости от того, какое приложение вы разрабатываете, вы можете использовать madlib (GPL) или ffmpeg (LGPL).
Вы будетенеобходимо нормализовать все ваши треки на той же частоте (повторная выборка) и выбрать выход битовая глубина .
сейчасВы можете смешать все свои треки.Предполагая, что у вас есть 2 канала, основная идея состоит в том, чтобы вычислить среднее значение для всех выборок правого канала ваших дорожек, а затем сделать то же самое для левого канала.Есть много подходов к этому, и здесь вам придется выбирать компромисс между производительностью и качеством для ваших результатов.Например, некоторые разработчики предпочитают выполнять операцию смешивания с плавающей точкой, чтобы иметь дело с эффектами отсечения (d) , но другие могут посоветовать против этого, потому что это влияет на производительность.Есть хороший пост о целочисленном микшировании здесь (на него ссылались несколько раз в SO).Также до (или во время) этого шага вы могли бы реализовать некоторый процесс нормализации звука , используя множитель для выборок канала, который вы хотите нормализовать.
НаконецВы можете снова сжать ваш смешанный звук.Вы можете использовать lame , например, для этой задачи, или ffmpeg еще раз.
Существует множество пакетов DSP для linux , которыеможет сделать несколько (или все) из этих шагов для вас.Один проект GPL, который мне приходит в голову, это VLC (VideoLan Client).Вы можете попробовать вызвать его как внешний процесс или запланировать его с помощью VLM (VideoLan Manager).Из документации :
Запланированное вещание:
new my_media broadcast enabled
setup my_media input my_video.mpeg input my_other_movie.mpeg
setup my_media output #rtp{mux=ts,dst=239.255.1.1,sdp=sap://,name="My Media"}
Естественно, что выходной поток в VLC также может быть локальным файлом.
Редактировать:Я также нашел вопрос о SO, где принятый ответ может быть полезен для вас, он рекомендует использовать Sox .С домашней страницы:
SoX - это кроссплатформенная (Windows, Linux, MacOS X и т. Д.) Утилита командной строки, которая может конвертировать различные форматы компьютерных аудиофайлов в другие форматы.Он также может применять различные эффекты к этим звуковым файлам (...)