Your media has some important properties:
- File container (mkv, mp4, avi, etc.)
- Video codec (H.264, divx, xvid, etc.)
- Audio codec (DTS, AC-3, AAC, MP3, etc.)
- Subtitle format (SRT, VOBSUB, PGS, etc.)
The technical aspects of this can be complicated, but in broad terms, what happens depends on a combination of the capabilities of your Plex App/device and the properties of the media you're trying to play.
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.
Related Page: Direct Play, Direct Stream, Transcoding
The media file is 100% compatible with the native player on the device on which you wish to play it. The file is sent as-is to the Plex App.
Direct Play requires almost no CPU usage on the Plex Media Server.
The media is almost compatible with the native client. For example, the audio and video codecs are compatible but the container is not. In this case, the audio/video codecs are direct streamed to the client, and Plex transcodes the container to a format the native player can use.
Direct Stream requires very little CPU usage on the Plex Media Server.
If the video or audio format isn't compatible, then your Plex Media Server has to convert them to a compatible format. It does this by "transcoding" it. Depending on the situation, only the audio may need to be converted, only the video, or both.
Transcoding audio requires very low to moderate CPU usage on the Plex Media Server. Transcoding video (including burning in subtitles) requires high to extreme CPU usage.