logoalt Hacker News

bob1029today at 6:09 AM6 repliesview on HN

There's never been a better time to consider writing your own media server solution from scratch.

I really don't like the idea of transcoding on demand. It has always created a janky experience on the client. I've been using a custom solution that runs everything through ffmpeg normalization as part of the media upload phase. Whenever a client wants to stream something we give them raw byte ranges directly from the block storage provider. In practice, this feels like flipping the channels on an analog tv. Every video starts and seeks nearly instantly.

I've long since given up on the dream of maintaining lossless master copies of everything just in case. Every practical use of that 50 gb copy of Home Alone would have you transcoding it. Most clients would choke on that bit rate. When would you actually be able to use all of the available information? Why not just discard what you'll never use? I realize it feels offensive to kill information like this but you can do a much better job with the end experience if you do.

You can get a modern chatbot to produce this experience in a single prompt. The code can run on anything slightly more powerful than a potato because you aren't transcoding at playback time anymore. A raspberry pi would be more than enough to serve a few clients on a LAN. If you remain humble in your list of demands (a simple directory browser that plays videos linked within), you can more easily achieve total autonomy.


Replies

deweytoday at 8:01 AM

> You can get a modern chatbot to produce this experience in a single prompt.

If you value your time that little and you get more joy out of building apps for multiple platforms instead of watching movies then this is the best choice. For everyone else it's probably better to just go with any of the hundres of solutions that went through years of bug fixing and pain already to get it working on all these platforms.

jeremycartertoday at 7:48 AM

Check out https://siloserver.org . Silo has its own API but also spins up a Jellyfin-protocol compatibility layer. This allows you to use any Jellyfin client and just point it at your Silo server.

show 1 reply
bambaxtoday at 6:57 AM

Transcoding on demand is just trading compute for storage. If you have infinite storage you can store all definitions in advance for any possible client (I think that's what Netflix does); but if you don't, transcoding on demand is fine and isn't that much slower (a bit janky, yes, but only a bit).

show 3 replies
gamblor956today at 7:21 AM

You just described Plex 0.1.

There's a reason they turned to transcoding: it means every device can get the highest quality version it is capable of displaying. Your solution limits the video to the lowest common supported quality.

FrinkleFrankletoday at 6:17 AM

Sounds cool. Care to share it?

show 2 replies
gib444today at 6:24 AM

Things are fast and simple when you ignore tradeoffs, such as extra disk space requirements