Witam, mam w planach spróbować napisać prosty serwer z muzyką w Javie (na wzór np. sinusbota)

Założenie jest takie, że na serwerze odpalam aplikacje która ma tam jakieś pliki mp3 i streamuje je do klientów (obstawiam TCP/UDP w stylu teamspeak3), użytkownicy z aplikacji u siebie lub przez strone www będą mogli kontrolować co gra, przewijać itp.

A moim pytaniem jest jak się za to zabrać? Moimi pomysłami było:

  1. Jedna aplikacja jest samym odtwarzaczem na serwerze (play, control itd) i po prostu gra do Virtual Audio Cable
    Druga aplikacja nasłuchuje tego i przesyła to do klientów którzy odtwarzają to u siebie
    Plusy: Wszyscy słuchają tego samego
    Minusy: 2 aplikacje na serwerze oraz pośrednikiem jest system (VAC)

  2. Aplikacja na serwerze nic nie odtwarza a tylko symuluje odtwarzanie, tj. hostuje pliki mp3, mówi który ma teraz grać oraz w jakim momencie (co sekunde zwiększa wartość 'int position' i ją wysyła klientom) a aplikacja u klienta odtwarza pliki z url oraz co sekunde pobiera wartość w jakiej ma być pozycji odtwarzanie
    Plusy: Jedna i prosta aplikacja na serwerze
    Minusy: Chyba mogą wystąpić jakieś przeskoki u klientów oraz nie u wszystkich może grać tak samo

Na coś takiego wpadłem ponieważ nie znam sposobu żeby bezpośrednio z pliku lub url pobierać muzyke i jednocześnie zamiast jej odtwarzać to wysyłać ją wszystkim klientom. Jest na to jakaś biblioteka lub jakiś sposób? Ew. moze w jakimś innym języku jest to lepiej zrobić, tylko w jakim i jak?