В своё время писал что-то подобное на основе Netty, использовал протокол RTSP и сопряжённые с ним (RTP, RTCP). В целом задача несложная, если жать медиапоток на стороне автора: получил фрейм, отдал всем подписчикам; но если требуется жать медиапоток на стороне сервера или хранить видео в каком-нибудь "неживом" формате, то на сервере нужно ещё писать обработку потока, что уже сложнее.
Принцип достаточно прост, нужно реализовать две связи:
1. Автор -> сервер, где автор передаёт данные серверу через протокол. Полученные данные можно хранить в сыром формате, что бы потом склеивать данные потока в файл обычного формата.
2. Сервер -> подписчики. Тут задачка усложняется выбором протокола. Если используются клиенты вроде VLC, то можно использовать тот же RTSP, если видео встраивается в флеш-плеер, то удобнее RTMP, а если есть желание использовать встроенный в браузер плеер, то это уже HLS или MPEG-DASH. Самая проблема - писать переход между протоколами.