Transcoding is a process in video processing in which the video is reformatted from one format/codec (internal structure) into a new format/codec. . It’s an important part of making sure that video can be viewed wherever it’s delivered, so it’s worth taking a little time to understand. There are several goals that the transcoding helps us to achieve.

Generating Device/Player-Playable Content

Sources files are generated by many kinds of tools and devices – professional studio authoring tools, mobile or other cameras, webcams, desktop transcoders, grabbing devices, etc. Each one of those has a different purpose and different ‘native’ output format (or codecs). For example, customers that generate sources with studio authoring tools tend to use the ProRes video codec. This codec is very convenient for editing purposes because it has high-quality preserving capabilities, but it also has a very high bitrate 50-200Mbps. (In comparison, Kaltura’s default highest quality flavor is 4Mbps, which is much lower.) Browser players, mobiles and other devices cannot play ProRes. Even if they could, the common network conditions cannot handle those kinds of bitrates. So for the video files to be viewable for most users, you have to transcode those sources into something that you can deliver and play.

Although it’s possible to instruct video producers to generate formats/codecs that will meet today’s playback/delivery constraints, it’s not a very practical solution. A much better plan is to transcode all uploaded files, whatever their original codec, into appropriate codecs for the devices they might be watched on.

Adaptive Bitrates

Let’s assume that with the uploaded source files that are playable and have a ‘reasonable’ bitrate (see above description) – MP4/H264 files with 4Mbps bitrate. Unfortunately, not all end users can properly play this file. Bandwidth will always be a limiting factor. Mobile devices, “on the move” conditions, and crowded locations will limit the download bandwidth well below this value.

Those issues are addressed by providing, per each source, several assets with several bitrate/quality levels. This is called Adaptive Bitrate (ABR) mode. The most common current ABR delivery modes are Apple HLS and MPEG DASH. The player can then automatically select the asset that mostly matches its playback conditions. For example, the default Kaltura flavor set has 6 flavors to support ABR playback, ranging from 400 to 4000 Kbps. Most video producers usually are not eager to generate all those assets by themselves, which is another reason having transcoding done automatically as part of video processing is ideal.

Matching Delivery Mode Requirements

To make matters even more complicated, the ABR files must comply with some encoding rules in order to make the ABR functionality to work properly. For example, the key frames in all ABR assets must be aligned to the same timing

There are yet other constraints that are specific for some modes, like Widevine DRM.

Reducing Customer Storage

The source files are typically much larger than the asset files. Sometimes you might choose to delete the sources after generation of the asset files.

Custom Requirements

In addition to all above, you may have your own specialized requirements. Some common ones include:

  • Special formats
  • Clipping/Trimming
  • Multi-lingual audio streams
  • and more.

Summing Up the Transcoding Process

As you can see, there are a lot of factors that go into video transcoding. It’s an essential part of the process of getting your video ready to be delivered if you want your viewers to have a quality playback experience. 

 

To learn more about how Kaltura handles transcoding, you might like this earlier post “Implementing Content Aware Encoding (CAE)”.

Share this
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone