bitmovin: Improving Video Quality on the Web
AWS Startup Spotlight
By Stefan Lederer, CEO, bitmovin
Our startup, bitmovin, is based in Austria and the US. We provide industry-leading streaming solutions and cloud-encoding services that enable our customers to improve the quality of their web-based video and provide superior media experiences for their users.
In this post, I share our backstory, discuss what we’ve built and how it revolutionizes the video-encoding industry, and share how AWS helps to make it all possible.
Who Are We?
The founders of bitmovin are Christopher Mueller, Christian Timmerer, and Stefan Lederer, and our background is in engineering. We have worked extensively in research and development of new multimedia standards and codecs, such as the Dynamic Adaptive Streaming over HTTP (DASH) standards of ISO and MPEG. This standard is used by Netflix and YouTube as the main streaming format today. Given that just these two companies produce about 50% of the peak US Internet traffic, one can say that we designed the streaming protocol used for a major part of today’s web! Originally from Austria, we recently came to the San Francisco Bay Area to take part in the YCombinator 2015 summer program and establish our US office.
The Challenge
Today, video quality on the web is rapidly improving, and new services are entering the market every day. The quality expectations of consumers have quickly gone from 720p (HD) resolution to 1080p (full HD), and users will soon begin buying 4K/UHD TVs and even virtual reality devices. In turn, this will create bottlenecks in video-encoding processes as even higher bitrates and encoding complexities are introduced.
The changing ecosystem is creating a big problem because typical hardware encoders and on-premises setups are not flexible enough to address these challenges. Video content companies need a service that can encode videos very fast — including at peak times — in a way that ensures that video playback on every device is of the best quality, with the lowest startup delay and no buffering.
A Video-Encoding Solution with a 100x Increase in Speed
While we were creating open-source software for the new MPEG-DASH streaming standard, we realized three things:
- We can increase the encoding speed massively by using flexible and scalable cloud infrastructure, up to 100x faster than real-time encoding.
- We can increase video quality by 50–100% in terms of delivered media bitrate while reducing startup delay and buffering by providing an optimized HTML5 video player.
- Despite the growing complexity of video encoding, streaming, and playback, we can simplify the video-encoding process with a SaaS offering and solve huge infrastructure needs by using Amazon Elastic Compute Cloud (Amazon EC2).
My co-founders and I believe that flexible cloud infrastructure can be used to address the challenges of the media industry. With that in mind, we’ve built the bitcodin.com video-encoding service, which encodes 100x faster than other encoding services and generates video in Netflix-grade quality using HTML5-based playback. We use the flexible cloud infrastructure of Amazon EC2 to encode (compress and convert) video to be streamed on the web. We increase video-encoding performance by distributing the load on multiple servers: as we spool up a bunch of servers for an encoding process, we load them, run them with media encoding, and shut them down again.
Flexibility and scalability are key success factors for bitcodin because they help us solve performance bottlenecks in the video-encoding industry. Resolutions like 4K, or high-quality VR content, are no problem for bitcodin.com, which reduces the time to market for our customers and their users. With Amazon EC2, we can make use of large amounts of instances at the same time, which helps us to scale with the needs of our customers. Furthermore, we can make use of large instances that provide 36 CPU cores, which is a unique feature in the cloud market.
Another huge benefit of running bitcodin.com on AWS is the large number of regions that are available to us. By using regions, we can provide encoding endpoints and API endpoints worldwide, to reduce the distance to the customer. This is very important considering the massive amounts of multimedia data that is transferred to and from our cloud platform, as well as the real-time requirements of technology like livestreams.
Additionally, embedding our bitcodin.com encoding service as well as bitdash HTML5 players (www.dash-player.com) within the AWS ecosystem makes it super easy for our customers to deploy Netflix-grade streaming systems end-to-end. For example, we just published a step-by-step tutorial that shows how to generate MPEG-DASH content using the bitcodin cloud transcoding platform, store the content in Amazon Simple Storage Service (Amazon S3), and distribute it through Amazon CloudFront.
How Does It Work?
Developers building video-streaming systems can use our bitcodin cloud-encoding service to encode videos for online delivery to web, mobile, and Smart TV platforms. The process is as follows:
- We gather their input videos from cloud storages such as Amazon S3, FTP servers, or direct upload.
- The developers set the qualities and formats, such as 1080p using the MPEG-DASH as well as HLS streaming formats.
- Finally, bitcodin encodes those videos at 100x speed, using the best-of-breed codecs and encoders to achieve optimal compression and quality at the end of the encoding process.
The output format plays everywhere on every device with low startup delay, no buffering, and without the need for plugins like Flash or Silverlight (it is HTML5 adaptive streaming compliant).
Besides that, developers get easy to use, comprehensive, and up-to-date API documentation with great support for both products. Together with various API client implementations, examples, and tutorials, this helps them to build Netflix-grade streaming systems in a minimum of time with less effort. The service is also available globally in various data center locations.
Was It Always that Simple?
Building a scalable system in the cloud is not as simple as it sounds. We realized that a cloud-based, distributed video-encoding system comes together with a lot of complexity. This includes not only the core technology, but also significant time spent developing our online portal and API to make our service as simple as possible to use.
In the beginning, we wanted to put part of our system (specifically, our live-streaming system that runs 24/7 streams) in a data center with our own servers because we assumed it would be more cost-efficient compared to our usual cloud-based systems. But it turned out that our assumption was wrong because we ran into various problems that increased our costs.
For example, after a few weeks of test runs our raid controller suddenly broke. We had to reorder new hardware, drive to the data center location, and install it, which was very time consuming. After that, we thought everything was fine, and the setup would run as expected.
But no, it didn’t! We began to see the livestream break down once a week. The servers and our livestreaming software were running fine, so it had to be an issue of data center connectivity. After another week of monitoring and investigation, we found out that the data center’s Internet connection was switching between its two redundant connections, resulting in high packet loss for some minutes (which was not an issue for most of their existing customers, but for our application it was a huge problem, and in the end it broke the livestream input signal). Unfortunately, the data center team wasn’t able to solve the problem, so we moved our livestreaming hardware to another data center. But we continued to have connectivity issues.
That was enough for us! We decided to spin up an Amazon EC2 instance in AWS, using one of the AWS locations near our customer (in this case, it was the new Frankfurt location). We used our existing livestreamer image. Within 10 minutes we had the infrastructure up and running. It’s been more than a year without any problems! Considering the time and effort we spent on our own infrastructure (not to mention the gray hairs it gave us), switching to AWS was one of the best decisions we ever made. For streaming and encoding, we use the same cloud provider the end customer is using. By doing this, we save on traffic costs between the customer’s storage and bitcodin’s encoding service. The majority of our customers run on AWS, and we see a lot more traction and growth with these customers. Running on AWS gave us the flexibility to concentrate on our core competency, which is delivering top-quality video streaming. To further reduce the costs, we decided to go for an EC2 Reserved Instance, which is a great way to tune the economics of permanently used cloud instances.
Another key to our success was our participation in AWS Activate, which is great for startups developing solutions with AWS. The program includes credits for free cloud resources and extra support, which is extremely helpful in the early stages of a new cloud service like ours.
What’s Next?
We are always keen to make our services as developer-friendly as possible, which is also a big target for the future. We plan to extend our API with a lot of new features, as well as provide more API client implementations for different platforms and languages. To that end, we just added a new open-source Android App, showcasing how you can use bitcodin.com to build apps that support MPEG-DASH. Additionally, we are adding more tutorials and tools that explain how to reduce your development efforts by using our services. For example, check out our HTML5 MSE/EME test page to see if your web browser is ready for the newest streaming standards used by Netflix and YouTube.