Загрузка аудио файлов и воспроизведение их на определенных позициях в Java - PullRequest
1 голос
/ 02 апреля 2012

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

Может кто-нибудь предложить мне подходящий API для

  1. Загрузить все аудиофайлы в память
  2. Воспроизведите аудиофайл в правильной позиции.

Я слышал о библиотеке клипов, но слышал, что в ней хранится только звук стоимостью 1 секунда. Есть предложения?

Если это поможет, аудиофайлы в моем случае имеют продолжительность 4 минуты каждый, и у меня их 40.

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Для Clip, который может использовать доступную (для приложения) оперативную память, см. BigClip.

.. класс BigClip через outofисключение памяти.

Это будет в JRE со стандартной памятью.У меня есть DukeBox для моей музыкальной коллекции.Он воспроизводит типичные MP3-файлы (стерео, 16 бит, 44,1 кГц) длительностью до 20 минут в пределах 512 мегабайт памяти, выделенной приложению.

Вы по-прежнему не указали, в каком формате звучит звук, поэтому это невозможносказать, сколько памяти потребовалось бы 160 минутам аудио, помимо «много».

OTOH, вы можете найти время, необходимое для загрузки каждый BigClip индивидуально , не оченьдолго.Мое программное обеспечение предназначено для загрузки непосредственно с локального диска и обернуто по умолчанию ProgressMonitorInputStream.Диалоговое окно прогресса появляется редко - и только для треков, которые воспроизводятся более 12-14 минут.Выполнение этого по одному может работать в стандартной памяти для ваших звуковых сэмплов.


.. 4 минуты каждый, и у меня есть 40 ..

Размер в памяти, необходимый для содержания этих 160 минут звука, будет отличаться в 16 раз (между БОТЕ) - между высокой (44100 кГц) / низкой (11025 кГц) частотой дискретизации, моно / стерео и 8/16 битаудио формат представления.

Меньшее разрешение

160 min * 
60 SecPerMin * 
11025 KHz * 
1 mono * 
1 byte (8 bit) 
= 
105,840,000 bytes 

Или примерно 105 МБ для нижнего предела .

1 голос
/ 02 апреля 2012
0 голосов
/ 02 апреля 2012

Для этого существует Java API, называемый Java Media Framework ( JMF ). Официальная страница гласит:

Java Media Framework API (JMF) позволяет добавлять аудио, видео и другие носители, основанные на времени, в приложения и апплеты, созданные на основе технологии Java. Этот дополнительный пакет, который может захватывать, воспроизводить, транслировать и транскодировать несколько форматов мультимедиа, расширяет платформу Java 2 Standard Edition (J2SE) для разработчиков мультимедиа, предоставляя мощный инструментарий для разработки масштабируемой кроссплатформенной технологии.

Вот дополнительные ресурсы:

  1. Официальный Обзор

  2. Статья: Обработка мультимедиа с помощью API Java Media Framework Петр Михаленко

...