В яве с медиа-api есть проблема. Но не все так плохо.
Если ява на андроиде, то все хорошо, но это не ко мне...
Если просто ява, то есть такая штука - gstreamer, а к нему неплохой биндинг для явы -
https://github.com/gstreamer-java/gst1-java-core и примеры -
https://github.com/gstreamer-java/gst1-java-examples
Под линуксом все отлично работает, я сам занимаюсь звуком, написал с использованием gstreamer и java несколько приложений. Работает под OSX и линукс. Под виндовс тоже вроде бы работает.
Также с gstreamer можно работать на питоне, буквально 5 дней назад написал приложение, которое берет звук с микрофона и постит в shoutcast сервер. Вот примеры -
https://github.com/GStreamer/gst-python/tree/maste...
Вообще, с gstreamer можно работать на любых языках программирования, от C/C++ до Rust
-
https://gstreamer.freedesktop.org/
Вообще, gstreamer очень мощная вещь, можно и в аудио, и в видео, и туда и обратно, с потоками и без.
Задавайте вопросы, если что.
PS. Да, java + gstreamer - вещь не для начинающих, нужно сначала хотя бы прочесть учебник по gstreamer, он заточен на C/C++, иначе ничего понятно не будет. С другой стороны, ничего сложного и нет, главное въехать в парадигму пайплайнов и шины сообщений.
Да, что касается линукса, то звук можно перехватить практически из любого приложения через pulseaudio, а уже затем через pulsesrc плагин забрать в gstreamer и свое приложение.
В винде тоже самое можно попробовать сделать через directshow + gstreamer.