Как преобразовать аудиопоток в MP3 с использованием Java? - PullRequest
4 голосов
/ 05 декабря 2008

Возможно ли использовать Java для преобразования аудиопотока в реальном времени из микшера в MP3?

  • Он должен быть преобразован во фрагмент в противном случае, иначе память будет исчерпана.
  • Я уже знаю, как записывать, но только для форматов без потерь, таких как wav и aiff.
  • Мне нужно преобразование, когда приходит звук.

Ответы [ 6 ]

4 голосов
/ 05 декабря 2008

Может быть, вы могли бы использовать LAMEOnJ , который является 100% Java API, обертывающим стандартный LAME API (LAME - кодировщик MP3).

Я не уверен, что он будет кодировать «чанк за чанк» ...

2 голосов
/ 06 ноября 2009

Используйте Xuggler, чтобы сделать это. Он бесплатный, с открытым исходным кодом (LGPL) и использует libmp3lame под прикрытием. И MediaTool API в Xuggler дает множество примеров того, как его использовать:

1 голос
/ 05 декабря 2008

Lame действительно является стандартом де-факто для кодирования MP3, отчасти из-за его высокого качества (кодирование MP3 трудно сделать правильно ... и это субъективное искусство), отчасти из-за юридических вопросов (MP3 - запатентованная методика , AFAIK, поэтому вы получаете двоичные файлы Lame с ограниченного числа сайтов, большинство из которых находятся в странах, где эти правовые вопросы менее (или не) принудительно применяются.

Кажется, что проект LAMEOnJ, найденный VonC, использует несвободную реализацию JNI, но я полагаю, что вы можете сделать свое собственное связывание с JNI или даже JNA, особенно если вы нацелены на конкретную систему.

0 голосов
/ 09 сентября 2009

попробуйте использовать кольцевой буфер для кодирования необработанного аудиобуфера в fly.

0 голосов
/ 05 декабря 2008

Создайте новый процесс в Java и запишите поток на стандартный инструмент, например SoX , чтобы он преобразовывал аудиоданные в MP3 на лету.

0 голосов
/ 05 декабря 2008

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

Я знаю, что это не источник Java, но он может привести вас на правильный путь - попробуйте посмотреть на Lame MP3 Encoder .

Насколько я знаю, все алгоритмы преобразования MP3 работают по частям. Им не нужно читать весь WAV-файл, чтобы начать конвертацию, но они конвертируются на лету.

...