Аудио (mp3) редактирование в C - PullRequest
2 голосов
/ 20 февраля 2011

Что я хочу сделать, это «разбить» .mp3 на два отдельных файла, используя в качестве аргумента длительность, чтобы указать, как долго должен быть первый файл.
Тем не менее, я не совсем уверен, как добиться этого в C. Есть ли конкретная библиотека, которая может помочь с этим? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2011

Это может быть так же просто, как вырезать файл в позиции, определяемой битрейтом mp3 и запрошенной длительностью. Но:

  • ваш файл должен быть CBR - этот метод не будет работать с файлами ABR или VBR, потому что они имеют разную плотность
  • Ваш плеер должен быть достаточно надежным, чтобы не сломаться, если он получит частичный mp3 кадр на старте. Большинство библиотек воспроизведения будут обрабатывать mp3-файлы таким образом, изящно.

Если вам нужна дополнительная информация, просто спросите, я на мобильном телефоне и могу получить дополнительную информацию позже.

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

Если этого недостаточно, вы должны декодировать mp3 в PCM, разделить его на границе семпла, а затем снова сжать в mp3.

Удачи

приписка

Когда вы говорите «сплит», я надеюсь, что вы не ожидаете, что они будут играть один за другим без слышимых «артефактов». Mp3-кадры не являются самодостаточными, так как они несут информацию из кадра раньше.

0 голосов
/ 20 февраля 2011

Я думаю, вы должны использовать для этой цели инфраструктуру gstreamer.Таким образом, вы можете написать приложение, в котором вы можете использовать существующие плагины для выполнения этой работы.Я не уверен в этом, но вы можете попробовать.Проверьте http://gstreamer.freedesktop.org/ Для запросов, связанных с gstreamer: http://gstreamer -devel.966125.n4.nabble.com /

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...