libsox для преобразования частоты дискретизации wav-файлов и т. д. - PullRequest
1 голос
/ 05 февраля 2009

РЕДАКТИРОВАТЬ: я хочу использовать libsox для программного преобразования частоты дискретизации файла WAV, аудио формат, каналы и т. Д.

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

Помощь


Может кто-нибудь объяснить, пожалуйста?

   The  function  sox_write  writes  len samples from buf using the format
   handler specified by ft. Data in buf must be 32-bit signed samples  and
   will  be converted during the write process. The value of len is speci-
   fied in total samples. If its value is not evenly divisable by the num-
   ber of channels, undefined behavior will occur.

Ответы [ 2 ]

1 голос
/ 19 октября 2009

Я бы порекомендовал комбинацию libsndfile и libsamplerate

http://www.mega -nerd.com / SRC

SRC предоставляет небольшой набор преобразователей чтобы качество было обменено против стоимости вычислений. Электрический ток лучший конвертер обеспечивает отношение сигнал / шум 145дБ с Полоса пропускания -3 дБ, расширяющаяся от постоянного тока до 96% теоретической наилучшей полосы пропускания для данная пара входов и выходов частота дискретизации.

http://www.mega -nerd.com / libsndfile /

  • Возможность чтения и записи большого количества форматов файлов.
  • Простой, элегантный и простой в использовании прикладное программирование Интерфейс.
  • Используется в Unix, Win32, MacOS и др.
  • Преобразование формата «на лету», включая подстановку байтов, введите преобразование и масштабирование битовой ширины.
  • Дополнительная нормализация при чтении данных с плавающей запятой из файлов содержит целочисленные данные.
  • Возможность открывать файлы в режиме чтения / записи.
  • Возможность записи заголовка файла без закрытия файла (только на файлы, открытые для записи или чтение / запись).
  • Возможность запрашивать библиотеку обо всех поддерживаемых форматах и получить текстовые строки, описывающие каждый формат.
0 голосов
/ 05 февраля 2009

Ну, я думаю, ваш вопрос как-то связан с последним предложением. Если у вас есть чередуемый буфер, количество сэмплов в буфере должно делиться на количество каналов, потому что это число сэмплов на канал, которые вы будете записывать. Например, допустим, у вас есть каналы L и R; ваши данные в буфере будут такими:

[0] 1st sample - L
[1] 1st sample - R
[2] 2nd sample - L
[3] 2nd sample - R
...
[n-1] n/2-th sample - L
[n] n-th sample - R

Надеюсь, это поможет.

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