Not All Devices Are Equal
You can use many different kinds of devices to watch media with Plex. You might have a mobile Smartphone that you take with you on the way to work, a tablet you use while relaxing in the house, and a full-featured HTPC in your home cinema. Each of these devices have a different set of ideal needs for playing back media.
- Mobile Handsets: Your mobile smartphone has a small, high resolution screen and would best play media that's been sized for it. You might also like to use your Plex Account and stream media over the internet during your commute. A full HD file isn't usually ideal in this case if you're streaming it over the internet.
- Tablets: Tablets have similar restrictions if you're streaming media over the internet - you don't want to use all your monthly mobile data allowance on a single show! Around the house, it can be useful to use less of your WiFi network bandwidth, particularly if there are a few devices sharing the same network.
- HTPC: A full-blown HTPC is more commonly wired to the network which means it can easily access the full HD show with no problems. It's nice to be able to get that full HD media automatically.
Plex makes juggling all these variables simple by using a combination of Direct Play, Direct Stream, and a smart Transcoder.
Providing the perfect stream
Direct Play, Direct Stream, and Transcoding are designed to provide the perfect media to your device, regardless of what it is. It works like this:
The App Understands the Device
A Plex App understands the device it's working on. It knows the ideal media resolution, whether it can handle a particular audio format (Dolby Digital, DTS, etc.), and what file format it prefers. When the App connects to a Server, it tells the Server about itself, so the Server knows how to tailor media sent to it.
If an App tells the Server that it has capabilities that exactly match the file you want to watch, the file can be sent to the App exactly as-is, so the work done by the Server is almost zero.
If an App tells the Server that it is capable of handling the video and audio streams in the source file, but it can't handle the file container (.mkv, .avi, etc), the Server will copy the streams into a new compatible container and send that to the App. There's a little more work required by the Server but not a lot.
If an App tells the Server it can't handle the video or audio in the stream at all, the Server will convert the incompatible tracks to a compatible one and send that to the App. This process is called Transcoding and does the following:
- Reads the incompatible audio or video track
- Resizes the video if it's too large
- Re-encodes the video to a compatible stream
- Reads the incompatible audio
- Re-encodes the audio to a compatible stream
- Sends the Transcoded results in a compatible format to the App
Note: Subtitles can introduce a wrinkle here sometimes. Even if a file's audio, video, and container are all compatible with a Plex App, if a subtitle stream is selected and is not compatible with the Plex App, then the Server will "burn in" the subtitle text within the video. This requires a full transcode of the video stream.
The process of transcoding is CPU intensive, but most modern CPU's are capable of handling one or more full transcodes.