epoupon / lms

Lightweight Music Server. Access your self-hosted music using a web interface.
http://lms-demo.poupon.dev
GNU General Public License v3.0
1.14k stars 62 forks source link

Feature Request - Cast Audio #155

Open eddyizm opened 3 years ago

eddyizm commented 3 years ago

When I travel, I've been using a android app which is ok but clunky and outside of the scope of LMS itself but at least it allows me to store the music offline.

Generally I really like the simple GUI of the webapp so at home, it would be nice if I could just cast whatever browser I'm using to my main audio system which is connected via a chromecast. Today I need to set up the BT to get this to work but since LMS is browser based, having it built in support would be a nice feature.

epoupon commented 3 years ago

Hi! I don't really know Chromecast, but can't you just cast the whole lms tab of your browser?

eddyizm commented 3 years ago

Hi Emeric, I believe when using Chrome on a desktop you can do that. Unfortunately firefox doesn't do it. I'm looking at some add ons (not a fan as they seem to be littered with security flaws) but I also believe those options are thinner on mobile.

Right now I've tried mirroring my android device to the chromecast which works, the older device stutters since it's trying to send everything, I'm going to try it on a new device to see if it is smooth.

kmod-midori commented 3 years ago

Front-end casting should work, we could also try DLNA if both devices are in the same LAN (but we need to experiment this with Docker)

JamesDAdams commented 2 years ago

Front-end casting should work, we could also try DLNA if both devices are in the same LAN (but we need to experiment this with Docker)

Being able to stream on several DLNA speakers the same music sync would be incredible !

kmod-midori commented 2 years ago

Things like DLNA casting should not be really difficult to write ,it's just some HTTP in UDP (SSDP), and later some XML in HTTP (UPnP/DLNA). As long as we use Docker's host networking mode, since the Docker proxy does not know how to process multicast UDP packets.

How to control the playback is another problem (we need to plug into the media controls in the web app and send commands to the server, which relays the control events to the receiver device). Depending on the control scheme and feature level, the task can be quite easy (cast and forget) or very hard (full control over the playback).

Chromecast is similar in concept, but uses modern technology such as WebSocket, TLS, and mDNS.