2013-09-25 3 views
0

Есть ли способ получить аудиопоток из аудиофайла (в частности, файл wav) в Java?Получить поток байтов из аудиофайла?

Я пытаюсь получить поток определенного интервала i.e от startTime до endTime, где startTime не равен нулю. Например, чтобы получить аудиопоток от 5 секунд до 10 секунд (5 секунд) 20-секундного аудиофайла.

Как это сделать?

ответ

2

Вы можете сделать это с помощью стандартной Java фонотеки: javax.sound.sampled.

Чтение .wav-файлов было хорошо описано здесь, а также как преобразовать байты в соответствующие кадры. Если вы проверите «Связанный» справа, вы найдете информацию о том, как читать аудиоданные, стоимость одного буфера за раз и как проходить через эти буферы и преобразовывать байты в данные PCM.

Предполагая, что вы знаете частоту кадров (например, 44100 кадров в секунду), он просто становится предметом подсчета байтов или кадров аудиоданных. Например, при стереоизображении, 16-битная кодировка со скоростью 44100 кадров в секунду, каждый кадр состоит из 4 байтов, поэтому байт (5 * 4 * 44100) будет началом 5-секундной точки, а (10 * 4 * 44100) будет 10-секундное пятно.

Учебники по звуковому сопровождению java - это жесткое чтение. Следующая ссылка имеет очень полезный пример кода в заголовке «Чтение звуковых файлов». http://docs.oracle.com/javase/tutorial/sound/converters.html

Там есть строка комментария, который читает «// Здесь, сделать что-то полезное с аудио данными, которые теперь в массиве audioBytes ...»

Вот где бы вы подсчитывать свои байты, и соберите Данные PCM из байтов.

Смежные вопросы