The action of transcoding means to convert information from one form to another. In the context of video transcoding, we refer to the container and format of media; for example, it may be desirable to convert a video formatted in Google’s VP9 to H.264 for lower end devices.
With the advent of streaming services, and the popularity of platforms such as Twitch and YouTube, it is interesting to know why and how content is delivered to a wide range of devices — whether you’re watching a movie from Netflix or watching a video on YouTube, most of the time, you’ll be watching content that has been converted from another “source.” This conversion is precisely what “transcoding” is.
In essence, video transcoding is an essential process in the “video delivery” pipeline (it is required to make certain types of content streamable using either the MPEG DASH/HLS protocols). Using a powerful server, or hardware encoder (these can come in the form of an add-in PCIe card in a server, or encoder hardware in modern graphics SOCs), videos can be converted to a wide variety of formats and bitrates to serve as many devices as possible.
Apart from making media content playable on most devices, transcoding offers other options when media is re-encoded. Namely, content can be further compressed (i.e. lower bitrate); this is useful for both mobile and lower-end devices that might not have large amounts of bandwidth to use when streaming content.
While videos can originate from any source; whether this is a recording from a point-and-shoot camera to an export from a video editor, all content is “coded.” This is important to understand as we explain the difference between encoding and transcoding. As mentioned above, transcoding is the act of converting information from one format to another. Compared to encoding, both technically “encode” media; however, the difference is subtle: encoding uses raw (uncompressed) video data, while transcoding converts between two (generally) compressed media formats:
This includes audio inside of a video container — for example, it might not be desirable to have 320 Kbps audio for a device that will eventually throw data away on a pair of Bluetooth headphones; so, a content/media delivery network might reduce the bitrate of the audio in a MP4 (or any other video container) to 128 Kbps.
With that said, there are a variety of options to transcode media. An example of software that can enable this is FFMPEG. The open-source project supports a wide variety of hardware accelerated appliances or graphics SOCs (this can be NVENC, or AMD’s equivalent VCE system) and has software-only modes (used when hardware acceleration is not available or is not desirable). It also supports a broad range of media codecs (whether you want to transcode an VP9 video into HEVC/H.265 to target iOS devices, or converting AV1 content to H.264 for lower end devices).
Note: Due to losses in hardware encoders, many people/companies choose to only use hardware acceleration for the “decode” stage of a video transcode and opt for software encoding in the final stages of transcoding (software-based encoding tends to be lossless).