Подтвердить что ты не робот

Абсолютное руководство для начинающих по работе со звуком в C/С++?

Мне всегда было интересно узнать о программном обеспечении для преобразования аудио, но я никогда не видел правильного объяснения с точки зрения начинающих о том, как написать простую программу, которая преобразует, например, mp3 файл в wav. Я не спрашиваю ни об одном из сложных алгоритмов, просто небольшой пример с использованием простой библиотеки. Поиск по SO, я придумал несколько имен, включая:

  • Lame
  • Инструментарий Synthesis Toolkit
  • OpenAL
  • DirectSound

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

У кого-нибудь есть простой пример/учебник по преобразованию звукового файла с использованием любой из этих библиотек? Мой вопрос специально направлен на C/С++, потому что это два языка, которые я сейчас изучаю, и поэтому я хотел бы продолжить фокусироваться на них.

Изменить. Одна вещь, о которой я забыл упомянуть: я нахожусь в системе * NIX.

4b9b3361

Ответ 1

Спасибо всем за ответы! Я как бы объединил их, чтобы успешно создать небольшую утилиту, которая преобразует файл AIFF/WAV/etc в mp3 файл. Кажется, есть некоторый интерес к этому вопросу, поэтому вот что я сделал, шаг за шагом:

Шаг 1: Загрузите и установите библиотеку libsndfile, как это предложил Джеймс Моррис. Эта библиотека очень проста в использовании - ее единственный недостаток - это не будет работать с mp3 файлами.

Шаг 2: Загляните в папку "examples", которая поставляется с libsndfile и найдите файл generate.c. Это дает хороший рабочий пример преобразования любого файла, отличного от mp3, в различные форматы файлов. Он также дает представление о силе libsndfile.

Шаг 3: Заимствуя код из generate.c, я создал файл c, который просто преобразует аудиофайл в WAV файл. Вот мой код: http://pastie.org/719546

Шаг 4: Загрузите и установите LAME encoder. Это установит библиотеку libmp3lame и утилиту командной строки lame.

Шаг 5: Теперь вы можете ознакомиться с API LAME или просто fork и выполнить процесс, чтобы перевести ваш WAV файл в mp3 файл.

Шаг 6: Выпустите шампанское и икру!

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

Ответ 2

Для преобразования между различными форматами (кроме MP3) проверьте libsndfile http://mega-nerd.com/libsndfile/

Libsndfile - это библиотека, предназначенная для позволяют читать и писать многие различные дискретизированные форматы звуковых файлов (например, MS Windows WAV и Формат Apple/SGI AIFF) через один стандартный библиотечный интерфейс.

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

Он также прост в использовании, поскольку API соответствует стилю имен функций библиотеки Standard C:

http://mega-nerd.com/libsndfile/api.html

И примеры включены в исходный дистрибутив.

Для фактического аудиовыхода потребуется другая библиотека, SDL, как уже упоминалось, может быть хорошим местом для начала. Хотя SDL также может читать/записывать аудиофайлы, libsndfile намного превосходит.

Ответ 3

Если вам интересно узнать о DSP и компьютерах, посмотрите на Synthesis Toolkit. Это мило. Он предназначен для обучения. Примеры и руководства, которые они имеют на своем веб-сайте, являются простыми и тщательными. Имейте в виду, ребята, которые его написали, написали, чтобы они могли создавать акустические модели реальных инструментов. В результате, они включили некоторые инструменты, которые просто пустые, но забавные. Это даст вам основное понимание обработки звука PCM. И вы, вероятно, сможете взломать некоторые забавные маленькие шумихи, пока вы на нем.

https://ccrma.stanford.edu/software/stk/

Ответ 4

Проверить libmad http://mad.sourceforge.net "Хороший пример должен служить" M "peg" Библиотека аудиодекодера "D" ". Также для простой кросс-платформенной обработки звука проверьте SDL http://www.libsdl.org/. Надеюсь, что это поможет.