Published Oct 1, 2026, 3:01 PM EDT Anurag is an experienced journalist and author who’s been covering tech for the past 5 years, with a focus on Windows, Android, and Apple. He’s written for sites like Android Police, Neowin, Dexerto, and MakeTechEasier. Anurag’s always pumped about tech and loves getting his hands on the latest gadgets. When he's not procrastinating, you’ll probably find him catching the newest movies in theaters or scrolling through Twitter from his bed. Transcoding sounds great on paper. I mean, why would you not want your media server to decode a video file on the fly, change its format, resolution, or bitrate, and re-encode it into a format the client device can actually play? It sounds like a feature you would actually want to use, but if you are self-hosting like me, you would go to any lengths to disable transcoding. It comes at a massive hardware cost and can ruin the whole experience if you don't have powerful hardware running your server. I have recently been on a mission to obliterate transcoding from my media server, but the process has been an absolute minefield, and what makes it almost impossible is the clients. The big offenders Every client has a different requirement You could have the most meticulously organized media library, with every file encoded to perfection, and it still wouldn't matter if the device on the other end refuses to play it. That's where the real nightmare begins. Every client has its own idea of what counts as a playable media file, and sometimes all it takes is one unsupported audio codec or subtitle track to send your server straight back into transcoding. Take the Apple ecosystem, for example. Apple TV and iOS devices have excellent hardware, but their native media playback has strict container and codec limitations. MKV support is a headache, AV1 support depends on the hardware and software, and even HEVC can become problematic depending on how the file is packaged. Then there are ASS/SSA subtitles, which can lose their styling or require the server to burn them into the video. Congratulations, your perfectly playable video is now being transcoded because of subtitles. Web browsers are another minefield. Chrome, Firefox, and Safari all have different codec capabilities, and support often depends on the underlying operating system and hardware. HEVC compatibility is particularly inconsistent. Add TrueHD or DTS audio, and you can forget native playback. At the very least, your server has to transcode the audio, even if the video itself is perfectly compatible. You would think smart TVs would be better, considering that playing media is practically their entire purpose. Unfortunately, LG webOS and Samsung Tizen bring their own problems. Underpowered SoCs, inconsistent codec support, licensing restrictions, and limitations around high-bitrate 4K playback all complicate direct play. Samsung even dropped DTS audio support years ago, which means a perfectly good video file can trigger transcoding simply because of its audio track. And then there is Roku, which deserves a special mention for being incredibly picky about what it accepts. Codec profiles, audio formats, subtitle formats, and even the way streams are packaged can determine whether a file plays directly or gets handed back to the server for conversion. A file that works flawlessly on one device can suddenly become a transcoding job on Roku. You either use multiple clients or disable transcoding You need to make this choice The frustrating part is that none of these devices fail in exactly the same way, so you can’t really build a predictable server. For example, a file that directly plays on your Apple TV might require transcoding in a browser. Or a video that works perfectly on your LG TV might run into audio compatibility issues on a Samsung. Fix one problem, and another device finds something else to complain about. And that brings me to the fundamental problem with trying to eliminate transcoding – you're not optimizing your library for one media player. You are trying to satisfy an entire ecosystem of devices that cannot agree on what a playable media file should look like. Unless you are willing to maintain multiple versions of the same content or restrict yourself to a very specific set of clients, achieving universal direct play becomes an exercise in chasing compatibility rather than simply enjoying your media. Getting around the transcoding mess It's a multi-step process So, how do you actually get around this mess? The unfortunate reality is that you cannot expect every client to adapt to your media. If you want to eliminate transcoding, your media must bend to the lowest common denominator of your devices. And after plenty of trial and error, I have narrowed the solution down to three things. First, standardize your file formats. MP4 is your safest bet for compatibility, although MKV works perfectly well with capable players like Infuse or Kodi. Stick to H.264 for 1080p and HEVC Main/Main 10 for 4K, as long as your clients support it. For audio, always include an AAC stereo or AC3 5.1 compatibility track, while retaining TrueHD or DTS-HD MA as a secondary track for your home theater. The goal is to give every device something it can play without involving your server. Second, stop letting subtitles sabotage everything. You could have the perfect video and audio combination, only for an unsupported subtitle track to bring it all crashing down. ASS, SSA, and PGS subtitles can force the server to burn them into the video, triggering a full transcode. SRT is your safest option, and keeping an SRT alternative available eliminates one of the most frustrating compatibility headaches. Finally, choose your clients wisely. Sometimes the easiest fix is to stop fighting your hardware. Devices like the Nvidia Shield TV Pro and Apple TV 4K offer far better playback capabilities than many built-in smart TV apps. On Apple devices, Infuse is particularly useful because its built-in decoders support MKV and numerous codecs that native players struggle with, reducing the need for server-side transcoding.
I tried to build a media library that never transcodes, and the clients made that almost impossible
Full Article
Original Source
Read the full article at Xda-developers →KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.