What is Transcoding?
In the context of video – Transcoding refers to the process of compressing video files as much as possible at minimal quality loss to represent (and transfer) information by using less data. Essentially, video transcoding online is the conversion of a video file from one format to a better-compressed version to ensure consumers can stream content without buffering and at the highest possible qualities. So, how does transcoding work? And how might it affect your everyday life? Keep reading to find out!
Your camera (or device), your content, and video transcoding in your home
Picture this scenario: You’ve recently returned home to your comfortable sofa from your latest adventure or hobby. For the past few hours, your eyes have been locked on your computer, uploading and editing the HD videos that you captured earlier. You’ve finally finished the editing process on your laptop from your GoPro, high-quality Kodak cam, and/or Apple, Android, Windows, or other devices (Bitmovin is OS-agnostic after all!) and you’re ready to download and share your latest creation. The raw video files that you recorded on your device are significantly larger than your standard cloud storage, file sharing service, or social media platform can (or will) handle (pro-tip: check the raw size of a video file saved on the actual device – chances are, it’s huge!). Most raw HD video files amount to 18 GB of storage for every 60 seconds; based on an average of 1920 x 1080 pixels of a standard RGB 3x16bit uncompressed TIFF file.
To most, clicking export and then “share to social” are the final step to collecting those sweet sweet “likes.” But that’s not enough for you, you want to understand how and why to move the video content from one device to another. The first critical step is to hit “export and save”, most editing software (like the GoPro Quik for GoPro, Capture NX-D for Nikon, Capture Cam Express for Sony devices) will ask you to specify an output folder or Network Access Storage (NAS) location (ex: a hard disk connected to the wifi), a video & audio codec configuration, and a container format, like MP4. Congratulations! You’ve now completed the first step and unlocked all the elements required to complete the video transcode.
After you’ve confirmed the export, your computer might heat up – given the size of your newly created content, it’s not unexpected, your computer will require a lot of temporary storage (in terms of gigabytes) per second of exported video. Depending on your computer’s specifications the video transcode might take more or less time based on your RAM – this works inversely, lower RAM = slower transcodes / higher RAM = faster transcodes. From the consumer perspective – transcoding is as easy as the few clicks it takes to save and export to a new device. In short, transcoding is the process of converting one compressed (almost) losslessly video to a better-compressed video format. This is how video compression works as it moves from your computer to another local device.
To learn more about Lossless compression and how it works, check out (the completely free) Video Developer Network: Lesson 1.2 What are Lossless Compression Algorithms.
—-Keep reading to learn how transcoding works on Smart and Over-the-top (OTT) media devices—-
From your device to your computer, now transcoded wirelessly to your SmartTV
So, you’ve exported the video file from your editor and you know you have some friends or family coming over, and you want to show off your final product on your brand new high definition SmartTV. The short answer to this conundrum is to connect your device to the TV with an HDMI cable, but let’s be realistic, do you want to leave your comfortable couch for such an archaic action? Definitely not, we are in 2020 after all! You plan on streaming your video using some of the smart features on your device, but how does that work?
The editing software (like Quick for GoPro) has already created a semi-compressed file on your computer, but chances are that regardless of the server that your software used (GPU-based with plex or an outright transcoding solution), the file needs to be compressed and optimized further for streaming capabilities. This process of compressing multiple times across transitions is imperative to lowering buffering times and improving the user experiences as fewer resources (from the back-end) are required for your TV to decode and stream the content.
If your laptop/NAS has to load and send a very large file across your local network it might not yield stable playback on the client/TV device, because it would have to transmit a lot of data (4K quality for 1 minute is ~400 MB). So the transcoding server can employ a conversion process to HLS or DASH (like DASH for Plex client-server communication or HLS & Smoothstreaming for Google Chromecast) to achieve better quality and more stable table video streaming to your SmartTV (Try it yourself with a hosted Bitmovin player). The software on the TV must support what it receives from the transcoding server (like a Chromecast extension in your browser and the stick in the TV).
Using these extensions or Plex communications, a client device will support a video player that can playback the data received over Wifi. According to our 2019 Video Developer Report (illustrated below) the best video codec by device coverage is the H.264 codec, so that’s always a safe bet for which standard will operate across the most possible devices.
The ultimate transcode – sharing your content with the world!
To stream a video in a living room environment, you’ll need – on top of what we described before – a transcoding server, which encodes the transcoded video and sends it to a player that has the playback requirements of the device you want to consume the content on. For example, the player must be able to handle different types of streams (like ts or fmp4 for HLS), packaged in different protocols (like DASH or HLS). We are talking about a device that is capable through an app, of playing back the encoded video. When transcoding for streaming it is important to create a video file that meets device client requirements for playback; unfortunately, most client devices do not support every codec or container format as they aren’t supported natively – ex: any 2011 SmartTV. Converting and compressing (video) files at the local level is a small sample of what transcoding for the highest perceived quality. Achieving stable playback on your Local Area Network (LAN) is much easier, conceptually at least, than it is to transcode a video online – or even live! Maintaining quality and limiting size is even more important for web-based environments as giving way in either category will affect your viewer’s experience; be it lower quality content or long buffer times. Unlike the (semi)straightforward process of tra0nscoding your content locally, publishing your video online takes a lot more steps on the backend:
Laptop Transcode => Living Room (OTT) Transcode => Internet Transcode (+ Content Delivery Network) => Online!
In short, once you’re device completed the steps to transcode to your Smart TV, it has two (and a half) additional steps:
- Compressing and converting for internet transport – Uploading to a Content Delivery Network (CDN) – servers at “edge” locations (server locations at the EDGE of different networks) near users with transcoded copies of your video that will further distribute your video
- Delivered and played back on some stranger’s device (Yay internet!)
The edge locations allow faster transference and higher quality transference of data so that viewers of your video can see the great content that you are making without buffering and possibly as close to real event as possible (especially if you’re live-streaming).
Author’s Practical Example: End-to-End (E2E) video transcoding for Bitmovin
Now that you have a clear picture in mind of a daily transcoding process in your own home, I’ll shift to an ongoing real-life experience of transcoding video content for our recently published Bitmovin Video Developer Network, the go-to resource for people wanting to learn (more) about video development. The network contains multiple videos with university grade content.
I’m personally tasked with publishing all produced videos online. Our first video, Lesson 1.0 introduction & motivation (5 min runtime), was transcoded using two different methodologies (to test for efficiency):
- Standard H.264 profile encode at 1980×1080 pixels, resulting in 5GB(s) of video files
- Per-title encode, resulting in 200MB of video files (smaller by a factor 20x)
To ensure that our educational resource is truly universally streamable to users around the world it was important to transcode the videos at qualities and bitrates that all users can consume without buffering, therefore we used Per-Title methodology for all videos moving forward.
Bitmovin’s Video Developer Network
Introduced to the general public as of December 2019, the Bitmovin Developer Network was established with the sole purpose of introducing developers (and other interested parties) to the world of video development. Between our university-grade video lessons (all courses are completely free), global vid tech meet-ups, and learning labs, the developer network is the true home to grow the industry knowledge and capabilities of modern and future video technologies.
Are you interested in joining the Developer Network? All you need to do is sign-up with your email address at the bottom of the Developer Network Homepage. We’ll keep you up-to-date with the latest courses, meetups, and events!
If you want to share this article you can tweet about it here.