Per-connection mp3 transcode option

Feature description

Per-connection transcode toggle, so that secondary connections can do lower bitrate

Problem solved

When out and about, my playback falls through to using my external domain through TLS rather than the local IP primary connection. Ideally, that connection would do mp3 transcode for bitrate efficiency, while the primary LAN connection would remain as non-transcode.

Brought benefits

Less buffering / playback issues on the go.

Device type

Phone

Additional description and context

The switching between connections seems a bit rough sometimes when my network state changes, dunno how feasible refactoring the whole primary/secondary connection logic is, but it would be nice to also mark the local connection as wifi only, for example, so that leaving my home network more readily fails over to the external connection.

I searched existing feature requests

on

This is already possible. Set Mobile Maxiumum birate to what ever you desire, just not original or no transcoding will take place.

If you connect via VPN to home server use

*VPN connection as mobile

if you also want to treat public wifi as a mobile connection you need to set the wifi as a metered connection on your clients wifi settings and set “Metered WI-FI connection as mobile” in symfonium.

This way you achieve

Outside lan = transcode.

Inside lan = no transcode.

Ive set my server to transcode to opus by default, I dont understand why you would want MP3 over opus either. Opus is superior even on low bitrate.

You can also use Symfoniums built in transcoding engine.

Hey, I appreciate the response, but this completely fails to address the actual problem at hand.

  • mobile / wifi maximum bitrate - I don’t actually want to control this behavior by my connection type, as it means public/non-home wifi would try to do the raw flacs, hitting the same throughput problem
  • Local transcode on the phone - also solves nothing, the issue is transport bandwidth. (???)

I simply say “transcode to mp3” because that’s what the toggle in the app says. My navidrome is set to do opus 200kbps, which is about as transparent as 320kbps mp3. Either would still be a marked improvement.

My server is publically accessible at navidrome.hecate.pink; I don’t need a vpn and that would only add more network latency and lead to worse throughput. I have a nice lil reverse proxy on a VPS node that’s a 3ms hop away from my homeserver, and have productionized my music server just fine, thank you very much.

The ask here is to simply be able to do non transcode requests when hitting the local ip primary connection (tautologically only on my home network, guaranteed good conditions) and to always transcode otherwise on the secondary connection, regardless of network type.

My upload speed is a bit constrained and also in use with jellyfin, so minimizing the external egress requested over the secondary connection is what I think is the best solution. There’s not really a clean way to handle this in navidrome, I think? Otherwise I would handle transcode by “is the source IP inside my home network or coming from the reverse proxy”, but… that’s not a thing I can do on navidrome, afaik.

No it doesnt. Like I said you need to set non home wifi to metered connections. I literally have it set up and automated on my phone. When not home transcode, when home serve orginal. Maybe read first then comment?

This is also really stupud… This is a public forum and you are running an open instance…

completely immaterial to the feature request at hand. I really shouldn’t respond further than this because it’s derailing, but… if you think me posting a url to a (commonly used/known) subdomain is somehow insecure or stupid, you’re just wrong. We’re already in an era of massive amounts of bots and scrapers hitting up every domain and IP address possible, which is why navidrome etc have reasonable and solid auth layers gating them.

if you also want to treat public wifi as a mobile connection you need to set the wifi as a metered connection on your clients wifi settings and set “Metered WI-FI connection as mobile” in symfonium.

I don’t want to do this. The issue here is I want just my navidrome playback to be transcoding/serving at a lower bitrate. I do not, for example, want my youtube playback to be impacted on arbitrary wifi networks so that my navidrome playback is transcoding.

Like, I worked on the youtube cdn and work on internet infrastructure still. As I said earlier: my issue here is I want to effectively force just the traffice from navidrome → public internet → clients to do transcoding - and this is simplest to handle as a per-connection setting in symfonium, presently, by just changing the request type depending on which connection/address is being used - not which network is being used. These are two totally different heuristics and suggesting I use the latter is sloppy and indicates you don’t really understand this feature request.

Again, I appreciate the response, but like… don’t comment on other people’s feature requests trying to help if you don’t understand why what’s being asked for, is being asked for.

I should not have wasted my time responding to you. I can access your navidrome server, you think auth layer is going to secure you? I guess firewalls have been invented for fun? :joy: Even if you had it secured fully, sharing your public instance online is rule no.1 of stupid cyber security. But what do you care. You already know it all. Im not wasting anymore time teaching you good online practices.

Maybe next time be clear what you actually want:

Because like I said multiple times, your initial request is possible until you started adding more things.

yea dawg, there’s these lovely systems called “authentication tokens” and “gating your entire api upon having a valid session” and “standard password+user authentication”. i’m sure you both have a 0-day for navidrome and burned it for… a read-only music server.

cute that you looked at the login page from - and did nothing else, though :slight_smile: do you wanna keep playing games, or what. like, yeah I know what a firewall is, but I bet you don’t understand the firewall in front of my reverse proxy node nor the container firewall rules in the home network.

Maybe next time be clear what you actually want:

i was plenty clear about that for tolriq. i’m pretty sure he will understand this feature request just fine. whether he wants to do this or not is an entirely different question.

Because like I said multiple times, your initial request is possible until you started adding more things.

bro just take the L and move on and troll someone else who isn’t gonna post your home ip back at you