разрезать файл WAV на сегменты - PullRequest
1 голос
/ 21 марта 2012

Я хочу написать простую программу, которая берет wav-файл умеренного размера (60 секунд или около того) и разбивает его на сегменты длиной 1 секунда одного и того же формата (1.wav, 2.wav, ... и т. Д.)... Есть ли простая библиотека C ++ или Java, которая могла бы сделать это?Я не хочу манипулировать информацией заголовка

Ответы [ 4 ]

2 голосов
/ 21 марта 2012

Сценарий оболочки, обернутый вокруг утилиты командной строки ffmpeg.Также sox.

http://sox.sourceforge.net/

1 голос
/ 21 марта 2012

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

0 голосов
/ 29 марта 2012

ffmpeg имеет два флага, которые могут быть у нас: -t, который задает продолжительность целевого файла, и -ss, который задает точку, с которой вы начинаете чтение во входном файле.

Итак:

ffmpeg -t 2 -i input.mp3 output.mp3 ffmpeg -ss 2 -t 2 -i input.mp3 output2.mp3

Создает два файла - один, который содержит первые две секунды для input.mp3, и второй, который содержит две секунды для input.mp3, начиная с 2 секунд (т.е. вторые две секунды ...).

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

0 голосов
/ 21 марта 2012

Посмотрите на libsndfile .Также см. этот другой пост.Вам нужно:

  • удалить заголовки WAV для доступа к необработанным PCM данным сэмпла
  • циклически проходить по sample_rate сэмплам, которые будут представлять 1 секунду аудиои упакуйте эти буферы в новый WAV-файл (с заголовками), пока не достигнете EOF оригинала.

HTH

...