Вопрос

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

<Ол>
  • Загрузить файл MP3 / WAV

  • Получить 15-секундный клип файла

  • Наложите поверх него другой файл MP3 / WAV

  • Отображать как новый файл MP3 / WAV

  • Это было полезно?

    Решение

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

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

    Вас также может заинтересовать вопрос о переполнении стека на странице linux best c audio library

    Другие советы

    Он не поддерживает MP3 по патентным причинам, но libsndfile очень хорош библиотека с открытым исходным кодом (LGPL) для загрузки и сохранения звука во множестве других аудиоформатов, включая WAV.

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

    Библиотека libsox из sox (а не http://libsox.sourceforge.net/ , который является чем-то совершенно другим), похоже, имеет простой API, который можно использовать. В документации приведен следующий пример для стереофонического и монофонического микширования:

      

    Представлять образцы в виде целых чисел   вызвать проблемы при обработке   аудио. Например, если эффект   смешайте левый и правый каналы в   один монофонический канал должен был использовать   Линия

        *obuf++ = (*ibuf++ + *ibuf++)/2;
    
      

    искажение может произойти, так как   промежуточное добавление может переполниться 32   биты. Линия

        *obuf++ = *ibuf++/2 + *ibuf++/2;
    
      

    обойдет проблему переполнения   (за счет наименьшего   значительный бит).

    Вы можете попробовать осмотреться http://terminatorx.org/ Я смотрел на это, чтобы сделать что-то подобное.

    Очень хорошая C ++ аудио / синтезаторная библиотека - STK . Он выполняет множество задач и находится под лицензией типа BSD / MIT, т.е. вы можете использовать его для разработки коммерческих продуктов. Wav поддерживается, но не MP3. Для MP3 вы можете использовать, например, irrklang , который является бесплатным для некоммерческого использования (также MAD от underbit, используется множеством людей).

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top